ASP.NET-Sicherheit (Übersicht)

Dieser Artikel enthält eine Einführung in die ASP.NET-Sicherheit und bezieht sich auf die folgenden Microsoft .NET Framework Namespaces der Klassenbibliothek:

  • System.Web.Security
  • System.Web.Principal

Original Version des Produkts:   ASP.NET
Ursprüngliche KB-Nummer:   306590

Zusammenfassung

ASP.net bietet Ihnen mehr Kontrolle, um die Sicherheit für Ihre Anwendung zu implementieren. ASP.net Security arbeitet in Verbindung mit Internet Information Services (IIS) Sicherheit und umfasst Authentifizierungs-und Autorisierungsdienste zur Implementierung des ASP.NET-Sicherheitsmodells. ASP.NET enthält auch ein rollenbasiertes Sicherheitsfeature, das Sie für Windows-und nicht-Windows-Benutzerkonten implementieren können.

Dieser Artikel gliedert sich in die folgenden Abschnitte:

Sicherheits Fluss mit einer Anforderung

Die folgenden Schritte beschreiben die Abfolge der Ereignisse, wenn ein Client eine Anforderung abgibt:

  1. Ein Client fordert eine ASPX-Seite an, die sich auf einem IIS-Server befindet.
  2. Die Anmeldeinformationen des Clients werden an IIS übergeben.
  3. IIS authentifiziert den Client und leitet das authentifizierte Token zusammen mit der Anforderung des Clients an den ASP.NET-Arbeitsprozess weiter.
  4. Basierend auf dem authentifizierten Token von IIS und den Konfigurationseinstellungen für die Webanwendung entscheidet ASP.net, ob die Identität eines Benutzers für den Thread, der die Anforderung verarbeitet, festgelegt werden soll. In einem deutlichen Unterschied zwischen Active Server Pages (ASP) und ASP.net wird der authentifizierte Benutzer von ASP.net nicht mehr standardmäßig imitiert. Um den Identitätswechsel zu aktivieren, müssen Sie das impersonate-Attribut des Identity-Abschnitts in der Web.config Datei auf true festlegen.

Weitere Informationen zum Sicherheits Fluss finden Sie unter ASP.NET-Datenfluss.

Weitere Informationen zum Identitätswechsel in ASP.net finden Sie unter How to implement impersonament in an ASP.NET Application.

IIS verwaltet sicherheitsrelevante Konfigurationseinstellungen in der IIS-Metabasis. ASP.NET verwaltet jedoch Sicherheitseinstellungen (und andere) in XML-Konfigurationsdateien (Extensible Markup Language). Obwohl dies im Allgemeinen die Bereitstellung Ihrer Anwendung aus Sicherheitsgründen vereinfacht, erfordert das Sicherheitsmodell, das Ihre Anwendung einnimmt, die ordnungsgemäße Konfiguration sowohl der IIS-Metabasis als auch der ASP.NET-Anwendung über die Konfigurationsdatei (Web.config).

Die folgenden Konfigurationsabschnitte beziehen sich auf die ASP.NET-Sicherheit:

Authentifizierung

Authentifizierung ist der Vorgang, bei dem Sie Identifikations Anmeldeinformationen wie den Namen und das Kennwort des Benutzers abrufen und diese Anmeldeinformationen anhand einer bestimmten Autorität überprüfen.

ASP.net bietet vier Authentifizierungsanbieter:

Formularbasierte Authentifizierung

Die Formularauthentifizierung bezieht sich auf ein System, in dem nicht authentifizierte Anforderungen an ein HTML-Formular (Hypertext Markup Language) umgeleitet werden, in dem Benutzer ihre Anmeldeinformationen eingeben. Nachdem der Benutzeranmeldeinformationen bereitgestellt und das Formular übermittelt hat, wird die Anforderung von der Anwendung authentifiziert, und das System gibt ein Autorisierungs Ticket in Form eines Cookies aus. Dieses Cookie enthält die Anmeldeinformationen oder einen Schlüssel zum erneuten Abrufen der Identität. Nachfolgende Anforderungen aus dem Browser enthalten automatisch das Cookie.

Weitere Informationen zur Formularauthentifizierung finden Sie unter Formularauthentifizierungsanbieter.

Weitere Informationen zur Formularauthentifizierung in ASP.net finden Sie unter Vorgehensweise implementieren der formularbasierten Authentifizierung in Ihrer ASP.NET-Anwendung mithilfe von C# .net.

Windows-Authentifizierung

In der Windows-Authentifizierung führt IIS die Authentifizierung aus, und das authentifizierte Token wird an den ASP.NET-Arbeitsprozess weitergeleitet. Der Vorteil der Verwendung der Windows-Authentifizierung besteht darin, dass minimale Codierung erforderlich ist. Möglicherweise möchten Sie die Windows-Authentifizierung verwenden, um das Windows-Benutzerkonto zu imitieren, das von IIS authentifiziert wird, bevor Sie die Anforderung an ASP.net übergeben.

Weitere Informationen zur Windows-Authentifizierung finden Sie unter WindowsAuthenticationModule-Anbieter.

Passport-Authentifizierung

Die Passport-Authentifizierung ist ein zentralisierter Authentifizierungsdienst, der von Microsoft bereitgestellt wird und der eine einmalige Anmeldung und zentrale Profildienste für Mitglieds Websites anbietet. Normalerweise wird die Passport-Authentifizierung verwendet, wenn Sie die Funktion für einmaliges Anmelden über mehrere Domänen hinweg benötigen.

Weitere Informationen zur Passport-Authentifizierung finden Sie unter Passport Authentication Provider.

Standardauthentifizierung

Die Standardauthentifizierung wird verwendet, wenn Sie keine Sicherheit für Ihre Webanwendung wünschen. für diesen Sicherheitsanbieter ist ein anonymer Zugriff erforderlich. Bei allen Authentifizierungsanbietern bietet die Standardauthentifizierung eine maximale Leistung für Ihre Anwendung. Dieser Authentifizierungsanbieter wird auch verwendet, wenn Sie ein eigenes benutzerdefiniertes Sicherheitsmodul verwenden.

Authorization

Autorisierung ist der Prozess, der überprüft, ob der authentifizierte Benutzer Zugriff auf die angeforderten Ressourcen hat.

ASP.net bietet die folgenden Autorisierungsanbieter:

Dateiautorisierung

Die FileAuthorizationModule Klasse führt eine Dateiautorisierung durch und ist aktiv, wenn Sie die Windows-Authentifizierung verwenden. FileAuthorizationModuleist für die Durchführung von Prüfungen in Windows-Zugriffssteuerungslisten (ACLs) zuständig, um zu ermitteln, ob ein Benutzer Zugriff haben soll.

URL-Autorisierung

Die UrlAuthorizationModule -Klasse führt eine URL-Autorisierung (Uniform Resource Locator) durch, die die Autorisierung basierend auf dem URI-Namespace (Uniform Resource Identifier) steuert. URI-Namespaces können sich von dem physikalischen Ordner und den Dateipfaden unterscheiden, die von NTFS-Berechtigungen verwendet werden.

UrlAuthorizationModuleimplementiert sowohl positive als auch negative Autorisierungs Assertionen; Das heißt, Sie können das Modul verwenden, um den Zugriff auf beliebige Teile des URI-Namespaces für Benutzer, Rollen (wie Manager, Tester und Administratoren) und Verben (beispielsweise und) selektiv zuzulassen oder zu verweigern GET POST .

Weitere Informationen zur Autorisierung in ASP.net finden Sie unter ASP.net Authorization.

Rollenbasierte Sicherheit

Die rollenbasierte Sicherheit in ASP.net ähnelt der rollenbasierten Sicherheit, die von Microsoft com+ und Microsoft Transaction Server (MTS) verwendet wird, obwohl es wichtige Unterschiede gibt. Die rollenbasierte Sicherheit in ASP.net ist nicht auf Windows-Konten und-Gruppen limitiert. Wenn beispielsweise die Windows-Authentifizierung und der Identitätswechsel aktiviert sind, handelt es sich bei der Identität des Benutzers um eine Windows-Identität ( User.Identity.Name = "Domain\username" ). Sie können Identitäten für die Mitgliedschaft in bestimmten Rollen überprüfen und den Zugriff dementsprechend einschränken. Zum Beispiel:

Visual Basic .NET Code

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-Code

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");

Wenn Sie die Formularauthentifizierung verwenden, werden dem authentifizierten Benutzer keine Rollen zugewiesen; Sie müssen dies programmgesteuert ausführen. Um dem authentifizierten Benutzerrollen zuzuweisen, verwenden Sie das OnAuthenticate -Ereignis des Authentifizierungsmoduls (das Formular Authentifizierungsmodul in diesem Beispiel), um ein neues Objekt zu erstellen GenericPrincipal und es der User-Eigenschaft des-Objekts zuzuweisen HttpContext . Der folgende Code veranschaulicht Folgendes:

Visual Basic .NET Code

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-Code

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);
         }
    }
}

Um zu überprüfen, ob sich der Benutzer in einer bestimmten Rolle befindet und den Zugriff entsprechend einschränken, verwenden Sie den folgenden Code (oder ähnliches) auf Ihren ASPX-Seiten:

Visual Basic .NET Code

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");

Weitere Informationen zur rollenbasierten Sicherheit finden Sie unter Role-Based Security.

Informationsquellen

Weitere allgemeine Informationen zu ASP.net finden Sie in der folgenden Newsgroup:

ASP.NET-Newsgroup

Weitere Informationen finden Sie im folgenden Artikel oder in den Büchern: