Makale numarası: 306590 - Son Gözden Geçirme: 29 Ekim 2007 Pazartesi - Gözden geçirme: 3.14

BILGI: ASP.NET güvenliğine genel bakış

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Bu makalede, aşağıdaki Microsoft .NET Framework Sınıf Kitaplığı ad alanlarına başvurulmaktadır:
  • System.Web.Security
  • System.Web.Principal

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, bir ASP.NET'e Giriş sağlar güvenlik.

Ek ASP.NET genel bakış için aşağıdaki Microsoft Knowledge Base makalesine başvurun:
305140  (http://support.microsoft.com/kb/305140/EN-US/ ) BILGI: ASP.NET Yol Haritası

Daha fazla bilgi

ASP.NET uygulama güvenliği uygulamak için daha fazla denetim sağlar. ASP.NET güvenliği, ınternet ınformation Services (IIS) güvenliği ile birlikte çalışır ve ASP.NET güvenlik modeli uygulamaktadır kimlik doğrulama ve yetkilendirme hizmetlerini içerir. ASP.NET, Microsoft Windows ve Windows kullanıcı hesapları için uygulayabileceğiniz bir rol tabanlı güvenlik özelliği de içerir.

Bu makalede, aşağıdaki bölümlere ayrılmıştır:

Güvenlik özellikleri içeren bir istek akışını

Aşağıdaki adımlar bir istemci istekte bulunduğunda olayların sırası özetlemektedir:
  1. Bir istemci bir ııS'DE bulunan bir .aspx sayfası istekleri sunucu.
  2. Istemcinin kimlik bilgilerini, ııS'E geçirilir.
  3. IIS, istemcinin kimliğini doğrular ve kimliği doğrulanmış bir belirteç birlikte, ASP.NET alt işlemi istemcinin isteğine iletir.
  4. IIS ve Web uygulaması için yapılandırma ayarlarını bir kimliği doğrulanmış belirteçten bağlı olarak, ASP.NET bir kullanıcı, isteği işleyen iş parçacığının özelliklerini almasına izin verilmeyeceğini belirler. Bir çok farklı arasındaki farkı Microsoft Active Server Pages (ASP) ve ASP.NET, ASP.NET'in artık kimliği doğrulanmış bir kullanıcı varsayılan olarak temsil eder. Kimliğe bürünme özelliğini etkinleştirmek için true Web.config dosyasında <a0>kimlik</a0> bölümünün <a2>özelliklerini</a2> özniteliğini ayarlamanız gerekir.
Güvenlik akışı hakkında daha fazla bilgi için aşağıdaki konuda, .NET Framework Software Development Kit'e (SDK) başvurun belgeler:
ASP.NET veri akışı
http://msdn.microsoft.com/en-us/library/xa68twcb(vs.71).aspx (http://msdn.microsoft.com/en-us/library/xa68twcb(vs.71).aspx)
ASP.NET'te kimliğine bürünüyor hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
306158  (http://support.microsoft.com/kb/306158/EN-US/ ) BILGI: Bir ASP.NET uygulamasında kimliğe bürünme uygulama

Ilgili yapılandırma ayarları

IIS, IIS güvenlikle ilgili yapılandırma ayarlarını korur metatabanı. ASP.NET, güvenlik (ve diğer) ancak tutar yapılandırma ayarlarını yapılandırma dosyalarındaki Genişletilebilir Biçimlendirme Dili (XML). Bu genellikle bir güvenlik açısından uygulamanızdan dağıtımını kolaylaştırır, ancak uygulamanız uyarlar güvenlik modeli, hem de IIS metatabanı yapılandırmasının doğru ve ASP.NET uygulamanızı, yapılandırma dosyasının (Web.config) necessitates.

ASP.NET güvenliği için ilgili aşağıdaki yapılandırma bölümler:

kimlik doğrulaması

Kimlik doğrulama, kullanıcı adı ve parola gibi kimlik kimlik bilgileri alınmalıdır ve yetkili bu kimlik doğrulama işlemidir.

ASP.NET, dört kimlik doğrulama sağlayıcıları sağlar:

Form kimlik doğrulaması

Form kimlik doğrulaması, kimliği doğrulanmamış isteklerin kullanıcıların kimlik bilgilerini yazın, köprü metni biçimlendirme dili (HTML) Form'a yönlendirildiği sistem gösterir. Kullanıcı kimlik bilgilerini sağlar ve formu gönderdikten sonra uygulama isteğin kimliğini doğrular ve sistem, bir yetkilendirme bilet tanımlama bilgisi biçiminde verir. Bu tanımlama bilgisi kimlik bilgilerini veya kimliği yeniden almak için bir anahtar içerir. Tarayıcıdan gelen sonraki istekleri otomatik olarak tanımlama bilgisini içerir.

Forms kimlik doğrulaması hakkında daha fazla bilgi için .NET Framework SDK'sındaki aşağıdaki konuya bakın belgeler:
Form kimlik doğrulama sağlayıcısı
http://msdn.microsoft.com/en-us/library/907hb5w9(vs.71).aspx (http://msdn.microsoft.com/en-us/library/907hb5w9(vs.71).aspx)
ASP.NET'te Forms kimlik ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
301240  (http://support.microsoft.com/kb/301240/EN-US/ ) NASıL YAPıLıR: Forms-Based gerçekleştir ASP.NET uygulamanızı, C# .NET kullanarak kimlik doğrulama

Windows kimlik doğrulaması

Windows kimlik doğrulaması, IIS kimlik doğrulaması gerçekleştirir ve kimliği doğrulanmış bir belirteç için ASP.NET alt işlemi iletilir. Windows kimlik doğrulaması, en az gerektirmesidir kullanmanın yararı kodlama. Windows için kullanmak istediğiniz kapatma isteği ASP.NET'e el önce IIS kimlik doğrulaması Windows kullanıcı hesabının kimliğine bürünmek için kimlik doğrulaması.

Windows kimlik doğrulaması hakkında daha fazla bilgi için aşağıdaki konuda, .NET Framework SDK belgelerine başvurun:
WindowsAuthenticationModule sağlayıcısı
http://msdn.microsoft.com/en-us/library/907hb5w9(vs.71).aspx (http://msdn.microsoft.com/en-us/library/907hb5w9(vs.71).aspx)

Passport kimlik doğrulaması

Passport kimlik doğrulaması, tek bir oturum açma ve üye siteler için çekirdek profil hizmetleri sunan Microsoft sağlayan bir merkezi kimlik doğrulama hizmeti, ' dir. Genellikle, birden çok etki alanları arasında özelliği tek bir oturum gerektiğinde Passport kimlik doğrulaması kullanılır.

Passport kimlik doğrulaması hakkında daha fazla bilgi için aşağıdaki konuda, .NET Framework SDK belgelerine başvurun:
Passport kimlik doğrulama sağlayıcısı
http://msdn.microsoft.com/en-us/library/f8e50t0f(vs.71).aspx (http://msdn.microsoft.com/en-us/library/f8e50t0f(vs.71).aspx)

Varsayılan kimlik doğrulama

Varsayılan kimlik doğrulama, Web uygulamanızın tüm güvenlik istiyorsanız kullanılır; anonim erişim, bu güvenlik sağlayıcı için gereklidir. Tüm kimlik doğrulama sağlayıcıları arasında varsayılan kimlik doğrulama, uygulamanız için en yüksek performans sağlar. Bu kimlik doğrulama sağlayıcısı, kendi özel güvenlik modülünde kullandığınızda da kullanılır.

Yetkilendirme

Yetkilendirme, kimliği doğrulanmış bir kullanıcı, istenen kaynaklara erişimi olup olmadığını doğrulayan işlemidir.

ASP.NET aşağıdaki yetkilendirme sağlayıcıları sunar:

FileAuthorization

FileAuthorizationModule sınıfı Dosya yetkilendirmesi gerçekleştirir ve Windows kimlik doğrulaması'nı kullandığınızda, etkin. FileAuthorizationModule Windows erişim denetimi denetimler yapmaktan sorumlu listeleri (ACL) kullanıcı erişimi olup olmayacağını belirlemek için.

UrlAuthorization

UrlAuthorizationModule sınıfı, URI ad boşluğu dayalı yetkilendirme denetimleri Tekdüzen Kaynak Konum Belirleyicisi (URL) yetkilendirme gerçekleştirir. URI ad alanları, NTFS izinleri kullanan fiziksel klasör ve dosya yolları oldukça farklı olabilir.

Her iki olumlu ve olumsuz yetkilendirme onaylamaları UrlAuthorizationModule uygular; diğer bir deyişle, seçerek veya kullanıcılar ve roller (örneğin, yönetici testers ve Yöneticiler) fiiller (gibi almak (GET) ve POST) URI ad alanının rasgele bölümlerine erişimi reddetmek için modül kullanabilirsiniz.

ASP.NET'te yetkilendirme hakkında daha fazla bilgi için aşağıdaki konuda, .NET Framework SDK belgelerine başvurun:
ASP.NET yetkilendirmesi
http://msdn.microsoft.com/en-us/library/wce3kxhd(vs.71).aspx (http://msdn.microsoft.com/en-us/library/wce3kxhd(vs.71).aspx)

Rol tabanlı güvenlik

Önemli farklılıklar olsa ASP.NET'te rol tabanlı güvenliği kullanan Microsoft COM + ve Microsoft Transaction Server (MTS), rol tabanlı güvenlik için benzer. ASP.NET'te, rol tabanlı güvenlik, Windows hesapları ve grupları için sınırlandırılmamıştır. Windows kimlik doğrulaması ve kimliğe bürünme özelliği etkinleştirilmişse, örneğin, kullanıcı kimliğini bir Windows kimliğine ise (User.Identity.Name "Domain\username" =). Belirli bir rol üyeliği için kimlik denetimi ve buna göre erişimi kullanabilirsiniz. Örneğin,:

Visual Basic .NET kodu
If User.IsInRole("BUILTIN\Administrators") Then
   Response.Write("You are an Admin")
Else If User.IsInRole("BUILTIN\Users") then
   Response.Write("You are a User")
Else
   Response.Write("Invalid user")
End if
				
Visual C# .NET kod
if ( User.IsInRole("BUILTIN\\Administrators"))
   Response.Write("You are an Admin");
else if (User.IsInRole("BUILTIN\\Users"))
   Response.Write("You are a User");
else
   Response.Write("Invalid user");
				
Forms kimlik doğrulaması kullanıyorsanız, kimliği doğrulanmış bir kullanıcı için rolleri atanmamış; bunu programlı olarak yapmanız gerekir. Kimliği doğrulanmış bir kullanıcıya roller atamak için <a0></a0>, kimlik doğrulama modülünün OnAuthenticate olay kullanın (formları olduğu bu örnekte, kimlik doğrulama modülü) yeni GenericPrincipal nesnesi oluşturma ve bunu HttpContext <a1>kullanıcı</a1> özelliği atayın. Aşağıdaki kod, bunu göstermektedir:

Visual Basic .NET kodu
Public Sub Application_AuthenticateRequest(s As Object, e As EventArgs)
   If (Not(HttpContext.Current.User Is Nothing)) Then
      If HttpContext.Current.User.Identity.AuthenticationType = "Forms" Then
         Dim id as System.Web.Security.FormsIdentity = HttpContext.Current.User.Identity
         Dim myRoles(3) As String
         myRoles(0)= "managers"
         myRoles(1)= "testers"
         myRoles(2)= "developers"
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles) 
      End If
   End If
End Sub
				
Visual C# .NET kodu
public void Application_AuthenticateRequest(Object s, EventArgs e)      
{
   if (HttpContext.Current.User != null)
   {
      if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" ) 
      {
         System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity;
         String[] myRoles = new String[3];
         myRoles[0]= "managers";
         myRoles[1]= "testers";
         myRoles[2]= "developers";
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
      }
   }
} 
				
kullanıcı belirli bir rolün olup olmadığını denetleyin ve buna göre erişimi kısıtlamak için şu kodu kullanın: (veya benzer) .aspx sayfalarınızdaki:

Visual Basic .NET kodu
If User.IsInRole("managers") Then
   Response.Write("You are a Manager")
Else If  User.IsInRole("testers") Then
   Response.Write("You are a Tester")
Else If User.IsInRole("developers") Then
   Response.Write("You are a Developer")
End if
				
Visual C# .NET Code
if (User.IsInRole("managers"))
   Response.Write("You are a Manager");
else if (User.IsInRole("testers"))
   Response.Write("You are a Tester");
else if (User.IsInRole("developers"))
   Response.Write("You are a Developer");
				
Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
306238  (http://support.microsoft.com/kb/306238/EN-US/ ) NASıL YAPıLıR: Role-based gerçekleştir, Visual Basic .NET kullanarak uygulamanızı ASP.NET'in Form tabanlı kimlik doğrulama ile güvenlik
Rol tabanlı güvenliği hakkında daha fazla bilgi için aşağıdaki konuda, .NET Framework SDK belgelerine başvurun:
Rol tabanlı güvenlik
http://msdn.microsoft.com/en-us/library/52kd59t0(vs.71).aspx (http://msdn.microsoft.com/en-us/library/52kd59t0(vs.71).aspx)

Referanslar

ASP.NET'in güvenlik yönergeleri hakkında daha fazla bilgi için aşağıdaki MSDN adlı teknik incelemeye bakın:
ASP.NET'te kimlik doğrulama: .NET güvenlik kılavuzu
http://msdn.microsoft.com/en-us/library/ms978378.aspx (http://msdn.microsoft.com/en-us/library/ms978378.aspx)
ASP.NET hakkında daha fazla genel bilgi için aşağıdaki MSDN haber grubuna bakın:
microsoft.public.dotnet.framework.aspnet (http://msdn.microsoft.com/newsgroups/default.aspx?query=microsoft.public.dotnet.framework.aspnet&dg=&cat=en-us-msdn&lang=en&cr=US&pt=&catlist=774F24A2-F71F-425F-AC2B-DC48AB0DA5C9&dglist=&ptlist=&exp=&sloc=en-us)
Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
311094  (http://support.microsoft.com/kb/311094/EN-US/ ) Hata: Okuma yapılandırma özellikleri açtığınızda "ConfigurationException" hata iletisi hesaplar.
306359  (http://support.microsoft.com/kb/306359/EN-US/ ) SORUN: ASP.NET'te Request.ServerVariables("LOGON_USER") döndürüyor boş dize
313091  (http://support.microsoft.com/kb/313091/EN-US/ ) NASıL YAPıLıR: Form kimlik doğrulaması'nda kullanmak için Visual Basic .NET kullanarak anahtarları oluştur
313116  (http://support.microsoft.com/kb/313116/EN-US/ ) SORUN: Form kimlik doğrulama istekleri loginUrl sayfa için yönlendirilir.
Daha fazla bilgi için aşağıdaki kitaplar bakın:
Reilly, Douglas J. Designing Microsoft ASP.NET Applications (http://www.microsoft.com/mspress/books/toc/5136.aspx) . Microsoft Press, 2001.

Esposito, Dino. Building Web Solutions with ASP.NET and ADO.NET (http://www.microsoft.com/learning/en/us/Books/5727.aspx) ' ni tıklatın. Microsoft Press, 2001.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
Anahtar Kelimeler: 
kbmt kbproductlink kbarttyperoadmap kbconfig kbinfo kbsecurity kbweb KB306590 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:306590  (http://support.microsoft.com/kb/306590/en-us/ )