ASPNET Core MVC uygulamalarında kullanıcı yetkilendirme ve kimlik doğrulama işlemleri oldukça önemlidir Authentication, kullanıcının kimlik doğrulama işlemini gerçekleştirerek bir uygulamaya erişmesine izin verirken, Authorization ise kimlik doğrulama işlemini geçen kullanıcının uygulama içinde ne kadar erişebileceklerine ilişkin kısıtlamaların belirlenmesidir ASPNET Core Identity ise, authentication ve authorization işlemlerini kolaylaştıran bir framework'tür Authentication işlemi, kullanıcı adı ve şifrelerle ya da sosyal medya hesapları gibi harici kaynaklar üzerinden gerçekleştirilir Kullanıcıların authentication işlemi gerçekleştirmeden uygulama fonksiyonlarına erişim sağlamaları mümkün değildir Authorization işlemi ise Identity rol tabanlı yetkilendirme sistemi kullanılarak yönetilir Kimlik doğrulama işlemi başarıyla sonuçlanan kullanıcılar, authorization sistemi ile belirlenen yetkiler doğrultusunda uygulama içinde hareket edebilir ve istenmey

ASP.NET Core MVC uygulamalarının en önemli özelliklerinden biri, kullanıcı yetkilendirme ve kimlik doğrulama işlemlerini kolaylaştırmasıdır. Bu sayede kullanıcıların uygulamaya erişimini kontrol edebilir ve yetkilendirme işlemlerini yönetebilirsiniz.
Authentication, kullanıcının kimlik doğrulama işlemini gerçekleştirerek bir uygulamaya erişmesine izin verme işlemidir. ASP.NET Core MVC uygulamalarında kullanıcı bilgileri kontrol edilir ve giriş işlemi için cookie kullanılır. Bu sayede kullanıcının uygulamaya erişimi kontrol edilir ve kimlik doğrulama işlemi gerçekleştirilir. Kullanıcılar kullanıcı adı ve şifreleri ile doğrulama yapabilirler veya sosyal medya hesapları gibi harici kaynaklar üzerinden doğrulama yapabilirler.
Authorization ise kimlik doğrulama işlemini geçen kullanıcının uygulama içinde ne kadar erişebileceklerine ilişkin kısıtlamaların belirlenmesidir. ASP.NET Core MVC uygulamalarında yetki kontrolü için Identity rol tabanlı yetkilendirmesi kullanılır. Rol tabanlı yetkilendirme, işlevler ve işlev gruplarına dayalı olarak roller oluşturur ve buna göre erişim izinleri verirken, policy tabanlı yetkilendirme, kullanıcının uygulama içinde erişebileceği öğeleri ayrı ayrı belirleyerek authorization işlemi yapar.
ASP.NET Core Identity, authentication ve authorization işlemlerini kolaylaştıran bir framework'tür. ConfigureServices metodunda Identity kurulumu yapılır ve Authentication ve Authorization sistemleri ayarlanır. Bu sayede uygulamanızda özelleştirilebilir kimlik doğrulama ve yetkilendirme işlemleri gerçekleştirebilirsiniz.
Authentication Nedir?
Authentication, bir kullanıcının kimlik doğrulama işlemini gerçekleştirerek bir uygulamaya erişmesine izin verme işlemidir. ASP.NET Core MVC uygulamalarında authentication işlemi için kullanıcıların bilgileri kontrol edilir ve giriş işlemi için cookie kullanılır. Bu sayede kullanıcının tarayıcısıyla uygulamaya erişim sağlandığında, uygulama tarafından sunulan özellikler, authentication sistemi sayesinde kullanıcının yetkilerine ve kimliğine göre belirlenmektedir.
ASP.NET Core MVC uygulamalarında kullanıcıların authentication işlemlerini gerçekleştirmeden uygulama fonksiyonlarına erişim sağlamaları mümkün değildir. Bu sayede uygulama içinde sadece yetkili olan kullanıcılar, belirlenen şartlara uygun olarak uygulama fonksiyonlarına erişim sağlayabilirler.
ASP.NET Core MVC uygulamalarında authentication işlemi hem kullanıcı adı ve parola ile hem de sosyal medya hesapları veya diğer uygulamalar üzerinden gerçekleştirilebilir. Bu sayede kullanıcılara, farklı tercihlerine ve ihtiyaçlarına uygun authentication seçenekleri sunulmaktadır.
- Username/Password Authentication: Kullanıcının ismi ve şifresi ile kimlik doğrulama işlemidir.
- External Authentication: Sosyal medya hesapları veya diğer uygulamalar üzerinden kimlik doğrulama işlemidir.
Authentication işlemi, uygulama kullanımı ve güvenliği açısından oldukça önemlidir. ASP.NET Core MVC uygulamalarında, authentication işlemleri için ASP.NET Core Identity özelliği gibi farklı yeteneklere sahip Framework'ler kullanılabilir.
Authorization Nedir?
Authorization, kimlik doğrulama işlemini başarıyla tamamlamış olan kullanıcının uygulama içinde ne kadar erişim yetkisine sahip olabileceğinin belirlenmesidir. Yani, kimlik doğrulama işlemi sonrasında kullanıcının sahip olduğu roller ve yetkiler, belirli bir düzenlemeye tabi tutulur ve buna göre uygulama içindeki erişim hakları belirlenir. Bu sayede, yetkisiz kullanıcıların hassas verilere ya da uygulama fonksiyonlarına erişimleri engellenmiş olur.
ASP.NET Core MVC uygulamalarında, authorization işlemleri için Identity rol tabanlı yetkilendirmesi kullanılır. Bu sayede, uygulama içinde erişim hakları rol ve yetkilendirme sistemi üzerinden yönetilir ve kullanıcılar, belirlenen rollerin sahip olduğu yetkiler doğrultusunda uygulama içinde hareket ederler. Ayrıca, kullanılan role bazlı yetkilendirme sistemi, kolay bir şekilde yönetilebilir ve uygulama gereksinimlerine uygun şekilde özelleştirilebilir.
Identity ile roles ve policys oluşturarak, işlevler ve işlev gruplarına dayalı olarak roller atanabilir ve buna göre erişim izinleri tanımlanabilir. Policy-based authorization sistemi ile de, kullanıcının uygulama içinde erişebileceği öğeler ayrı ayrı belirlenir ve authorization işlemi yapılır.
Böylece, kimlik doğrulama işlemi başarıyla sonuçlanan kullanıcılar, authorization sistemi ile belirlenen yetkiler doğrultusunda uygulama içinde hareket edebilir ve istenmeyen işlemlerden korunabilirler.
Authentication Nasıl Yapılır?
ASP.NET Core MVC uygulamaları, kullanıcıların giriş yaparak uygulamalara erişmelerine olanak tanıyan kimlik doğrulama (authentication) ve kullanıcıların belirli bir özelliğe veya sayfaya erişmelerinin kısıtlanması için bir yetkilendirme (authorization) sistemi sunar. İlk olarak, kullanıcıların kimlik doğrulama işlemleri hakkında bilgi edinelim.
ASP.NET Core MVC uygulamalarında kimlik doğrulama, kullanıcı bilgilerinin kontrol edilmesi ve giriş işlemi için cookie kullanılması ile gerçekleştirilir. Nasıl mı? Kullanıcı, kendisine sunulan giriş sayfasında kullanıcı adı ve şifre ile giriş yapar. Bu bilgiler, uygulama tarafından kontrol edilerek doğruysa cookie oluşturulur ve kullanıcı uygulamaya erişebilir hale gelir.
Bunun yanı sıra, uygulamalarda sosyal medya hesapları veya diğer uygulamalara erişim gibi diğer yetkilendirme yöntemleri de uygulanabilir. Ancak, bu yöntemlerin kullanımı için öncelikle uygulama tarafında entegrasyon işlemlerinin gerçekleştirilmesi gereklidir.
Böylelikle, ASP.NET Core MVC uygulamaları, kullanıcı kimlik doğrulama işlemlerinin kolaylıkla yapılabilmesine olanak sağlar. Ancak, uygulamaların ihtiyaçlarına göre belirlenen yetkilendirme işlemleri de kullanıcı güvenliği açısından oldukça önemlidir.
Username/Password Authentication
Kullanıcıların uygulamaya giriş yapmak için kullandığı en temel kimlik doğrulama yöntemidir. Bu yöntemde kullanıcıların kullanıcı adı ve şifreleri doğrulanır ve doğru olduğu tespit edilen kullanıcılara uygulamaya erişim izni verilir. Bu yöntemde, kullanıcı bilgileri veri tabanından kontrol edilir ve eşleştiği durumda giriş işlemi gerçekleştirilir. Kullanıcıların şifrelerini güvenli hale getirmek için uygulama tarafında şifreleri CRC, MD5 veya SHA algoritmaları gibi parola karma teknikleriyle saklanabilir. Bu sayede, kullanıcıların şifreleri daha az erişilebilir hale gelir ve daha güvenli bir uygulama ortaya çıkar.
External Authentication
Sosyal medya hesapları ve diğer uygulamalar üzerinden kimlik doğrulama işlemidir. Bu seçenek, kullanıcılara daha hızlı, daha kolay ve kullanıcı adı ve şifre gibi giriş bilgilerini hatırlama zorunluluğundan da kurtarmaktadır. Ayrıca kullanıcıların benzersiz bir kimliği olmasını sağlar. Bu nedenle, uygulama geliştiricileri, kullanıcı dostu bir deneyim sağlamak için harici kimlik doğrulama seçeneği sunmayı tercih ederler.
Örneğin, kullanıcı Facebook veya Google hesabı gibi sosyal medya hesapları kullanarak giriş yapabilir. Bu işlem, o uygulamada bir hesap oluşturma gerekliliğini ortadan kaldırır ve kullanıcının var olan sosyal medya hesap bilgilerini kullanarak doğrudan erişmesini sağlar. Böylece, kullanıcı kayıt sürecinde zaman kaybetmeden hızlıca uygulamayı kullanmaya başlayabilir.
Authorization Nasıl Yapılır?
ASP.NET Core MVC uygulamalarında kullanıcı girişi için yapılan authentication işleminin ardından, kullanıcının ne kadar erişim ve işlem yapabileceği authorization işlemiyle belirlenir. Bu işlem için Identity rol tabanlı yetkilendirmesi kullanılır.
- Role-Based Authorization: Bu yetkilendirme yöntemi işlevler ve işlev gruplarına göre roller oluşturur ve bunlara göre erişim izinleri verir. Örneğin, admin, moderator, editor gibi roller oluşturulup bu roller için belirli erişim izinleri verilebilir.
- Policy-Based Authorization: Bu yöntemde ise her uygulama öğesi (controller, action, vb.) için ayrı bir authorization politikası belirlenir ve bu politikalara göre kullanıcının erişim izinleri belirlenir. Örneğin, sadece yetkili kullanıcıların belirli bir controller'a erişebilmesi veya sadece belirli bir role sahip kullanıcıların belirli bir action'ı kullanabilmesi gibi.
Bu yetkilendirmeler için, ConfigureServices metodunda Identity yapısı kurulur ve Authorization yapısı ayarlanır. Böylece, kullanıcıların uygulamalarınız içindeki erişim haklarını yönetebilirsiniz.
Role-Based Authorization
Role-Based Authorization, yani rol tabanlı yetkilendirme, kullanıcılara yetki vermek için uygulama içinde belirli roller oluşturulmasını sağlar. Bu roller, işlevler ve işlev gruplarına dayalı olarak belirlenir ve buna göre erişim izinleri verilir.
Bu yöntemde, güvenlik ayarları rolle yapıldığı için kullanıcılara verilen roller doğrultusunda erişim hakları belirlenir. Yani kim olduğunuz değil, hangi role sahip olduğunuz önemlidir.
Bir örnek vermek gerekirse, bir uygulamada bir yönetici rolü belirlenebilir. Bu rol, uygulamanın bütün işlev ve özelliklerine erişebilirken, normal bir kullanıcı sadece belli bölümleri görebilir.
ASP.NET Core MVC uygulamalarında rol tabanlı yetkilendirme, Identity kullanılarak sağlanabilir. Bu yöntemde, kullanıcılar farklı roller için atanır ve belirlenmiş rollerin erişebileceği özellikler ayarlanır. Bu sayede, uygulama içindeki tüm kullanıcılar için ayrı ayrı yetkilendirme işlemi yapmak yerine, belirli bir role sahip kullanıcılara gruplama yapılabilir ve kısıtlamalar buna göre belirlenebilir.
Bunun yanında
- Authorize Attribute
- Policy-based Authorization
Role-Based Authorization sayesinde uygulama içindeki farklı kullanıcıların yetkileri daha iyi belirlenerek, güvenli bir kullanım sağlanabilir. Aynı zamanda, yetkilerin belirlenmesi, uygulama yönetiminin de daha kolay olmasını sağlar.
Policy-Based Authorization
Policy-Based Authorization, kullanıcının uygulama içindeki öğelere erişim yetkilerini ayrı ayrı belirleyerek authorization işlemini yapmaktadır. Bu yöntemde, kullanıcının kimliği ve belirli bir görevi olup olmadığı göz önünde bulundurulur.
Policy tanımlamaları Startup.cs dosyasında hazırlanabilir ve ConfigureServices metodunda ayarlanabilir. Bu şekilde, yönetim paneli veya işlevler gibi belirli özelliklere erişimi sınırlandırmak mümkündür. İlk olarak, RequireAssertion metodu kullanılarak poliçe tanımlanabilir:
services.AddAuthorization(options=>{ options.AddPolicy("AdminPolicy", policy=> { policy.RequireAssertion(context => { var isAdmin = context.User.HasClaim(c => c.Type == "IsAdmin" && c.Value == "True"); return isAdmin; }); });});
Yukarıda yer alan kod bloğunda, IsAdmin adlı bir kullanıcı claim'ine sahip olup olmadığı kontrol edilerek AdminPolicy poliçesi tanımlanmıştır. Daha sonra bu poliçe, uygulama içinde belirli bir alanı görüntülemek veya işlem yapmak isteyen kullanıcıların yetkilendirilmesi için kullanılabilir.
Belirli roller ve yetkilendirmeler de tanımlanarak Authorization işlemi gerçekleştirilebilir. Bu yöntem, işlev gruplarına veya belirli özelliklere erişimi sınırlandırmak için oldukça işlevseldir.
ASP.NET Core Identity ile Authentication ve Authorization Nasıl Yapılır?
ASP.NET Core Identity, kullanıcı yönetimi, authentication ve authorization işlemlerini kolaylaştıran bir framework'tür. ConfigureServices metodunda Identity kurulumu yapılıp, Authentication ve Authorization sistemi ayarlanır.
ASP.NET Core Identity ile kullanıcı doğrulama işlemleri oldukça kolay ve güvenlidir. Identity kurulumunu gerçekleştirdikten sonra, yetkilendirme işlemi için öncelikle Role-Based Authorization ve Policy-Based Authorization ayarları yapılmalıdır.
Role-Based Authorization işlemi için, Identity ile birlikte gelen IdentityRole özelliği kullanılır. IdentityRole, uygulamaya ait tanımlanmış rolleri tutar. IdentityUserRole özelliği de, her bir kullanıcı için rolleri tutar.
Policy-Based Authorization işlemi için ise, uygulamanın özelliklerine özel izinler verilmelidir. Böylece, her kullanıcı farklı erişim izinlerine sahip olabilir.
Authentication işlemi için, ConfigureServices metodunda AddAuthentication() metodu kullanılmalıdır. Bu metot, yetkilendirme işlemi için kullanılacak authentication middleware'ı ekler. Ayrıca, hangi authentication şemalarının aktif olacağı da belirlenir.
Authorization işlemi için ise, ConfigureServices metodunda AddAuthorization() metodu kullanılmalıdır. Bu metot, yetkilendirme işlemi için kullanılacak authorization middleware'ı ekler. Ayrıca, hangi authorization kurallarının aktif olacağı da belirlenir.
Sonuç olarak, ASP.NET Core Identity ile authentication ve authorization işlemi oldukça kolay bir şekilde gerçekleştirilebilir. Kurulumu ve ayarı oldukça basit olan Identity ile kullanıcılar kolayca doğrulanır ve yetkilendirme işlemi kolaylıkla yapılabildiği için uygulama güvenliği artar.