ASP.NET-Sicherheitsübersicht
ASP .NET Support Voice Column: ASP.NET-Sicherheitsübersicht
Um diese Spalte an Ihre Bedürfnisse anzupassen, möchten wir Sie einladen, Ihre Ideen zu Themen einzureichen, die Sie interessieren, und zu Problemen, die in zukünftigen Knowledge Base-Artikeln und Support Voice-Spalten behandelt werden sollen. Sie können Ihre Ideen und Ihr Feedback über das Ask For It-Formular einreichen. Unten in dieser Spalte finden Sie auch einen Link zum Formular.
Einführung
Sicherheit ist ein integraler Bestandteil jeder webbasierten Anwendung. Das Verständnis der ASP.NET-Sicherheit hilft beim Erstellen sicherer Webanwendungen. Dieses Dokument bietet einen kurzen Überblick über die Sicherheit in ASP.NET. Sie können die verschiedenen Ressourcen und Hinweise in diesem Dokument nutzen, um sich eingehend mit den Themen zu befassen.
Zurück an die Spitze
Das IIS-Sicherheitsmodell verstehen
Bevor die Anfragen ASP.NET erreichen, müssen sie von Microsoft Internet Information Services (IIS) authentifiziert werden. Es wäre sehr hilfreich zu erfahren, wie die IIS-Sicherheit funktioniert. Hilfreiche Informationen finden Sie in den folgenden Ressourcen.
INFO: Wie IIS Browser-Clients authentifiziert
Web-Sicherheit entwirren: Das Beste aus der IIS-Sicherheit herausholen
Wie funktioniert es?
Sicherheitsmodell für ASP.NET-Anwendungen
Übersicht über die Sicherheit von Microsoft Internet Information Server
Zurück an die Spitze
Informationen zur Worker-Prozessidentität
Unter Microsoft Windows 2000 oder Microsoft Windows XP läuft ASP.NET unter einem speziellen Benutzer namens ASPNET. Wenn Sie .NET Framework Version 1.1 auf einem Domänencontroller installieren, wird bei der Installation kein lokales ASPNET-Konto erstellt. Stattdessen werden ASP.NET-Anwendungen unter anderen Identitäten ausgeführt.
Auf Windows 2000-Domänencontrollerservern werden ASP.NET-Anwendungen unter der Identität IWAM_machinename ausgeführt. Auf Windows 2003-Domänencontrollerservern werden ASP.NET-Anwendungen unter der Identität NETWORK SERVICE ausgeführt (unabhängig vom IIS-Isolationsmodus). Unter bestimmten Umständen erfordert die Ausführung von ASP.NET auf einem Domänencontroller, dass Sie zusätzliche Schritte unternehmen, damit die Installation ordnungsgemäß funktioniert.
317012 Prozess- und Anforderungsidentität in ASP.NET
Zurück an die Spitze
Authentifizierung bei der ASP.NET-Autorisierung
Bei der Authentifizierung werden Identifikationsdaten wie Name und Passwort von einem Benutzer eingeholt und diese Daten dann gegenüber einer Autorität validiert. Wenn die Anmeldeinformationen gültig sind, gilt die Entität, die die Anmeldeinformationen übermittelt hat, als authentifizierte Identität. Nachdem eine Identität authentifiziert wurde, bestimmt der Autorisierungsprozess, ob diese Identität Zugriff auf eine bestimmte Ressource hat.
ASP.NET implementiert die Authentifizierung über Authentifizierungsanbieter, die Codemodule, die den Code enthalten, der zur Authentifizierung der Anmeldeinformationen des Anforderers erforderlich ist. ASP.NET unterstützt Formularauthentifizierung, Passport-Authentifizierung und Windows-Authentifizierungsanbieter.
Um einen Authentifizierungsanbieter für eine ASP.NET-Anwendung zu aktivieren, müssen Sie lediglich wie folgt einen Eintrag für die Anwendungskonfigurationsdatei erstellen:
// Web.config file <authentication mode= "[Windows|Forms|Passport|None]"/>
Der Modus ist auf einen der Authentifizierungsmodi eingestellt: Windows, Forms, Passport oder Keine. Der Standardwert ist Windows. Wenn der Modus „Keine" lautet, wendet ASP.NET keine zusätzliche Authentifizierung auf die Anforderung an. Dies kann nützlich sein, wenn Sie ein benutzerdefiniertes Authentifizierungsschema implementieren möchten oder wenn Sie ausschließlich anonyme Authentifizierung verwenden und das höchstmögliche Leistungsniveau wünschen.
Der Authentifizierungsmodus kann nicht auf einer Ebene unterhalb des Anwendungsstammverzeichnisses festgelegt werden. Wie bei anderen ASP.NET-Modulen erben Unterverzeichnisse im URL-Bereich Authentifizierungsmodule, sofern sie nicht explizit überschrieben werden. Zurück an die Spitze
Formularbasierte Authentifizierung
Die Formularauthentifizierung ist ein System, mit dem nicht authentifizierte Anforderungen mithilfe der clientseitigen HTTP-Umleitung an ein HTML-Formular umgeleitet werden. Der Benutzer gibt Anmeldeinformationen ein und sendet das Formular ab. Wenn die Anwendung die Anfrage authentifiziert, gibt das System ein Cookie aus, das die Anmeldeinformationen oder einen Schlüssel zum erneuten Erlangen der Identität enthält. Nachfolgende Anfragen werden mit dem Cookie in den Anfrageheadern ausgegeben. Sie werden von einem ASP.NET-Ereignishandler mithilfe der vom Anwendungsentwickler angegebenen Validierungsmethode authentifiziert und autorisiert.
Schutz statischer Dateitypen mithilfe der Formularauthentifizierung
Standardmäßig schützt die Formularauthentifizierung nur ASPX-Seiten und alle anderen .NET-Erweiterungen. Sie können die Formularauthentifizierung konfigurieren, um andere statische Erweiterungen wie .jpg, .gif, .html, .pdf usw. zu schützen. Ordnen Sie dazu diese Erweiterungen mithilfe des IIS-Managers wie folgt aspnet_isapi.dll zu:
Öffnen Sie den IIS-Manager. Klicken Sie dazu auf Start , dann auf Programme , zeigen Sie auf Verwaltung und klicken Sie dann auf Internetinformationsdienste-Manager .
Suchen Sie den virtuellen Ordner Ihrer Anwendung und klicken Sie mit der rechten Maustaste darauf (Ihre Anwendung muss für die Formularauthentifizierung aktiviert sein).
Klicken Sie auf Eigenschaften .
Klicken Sie auf Konfiguration .
Klicken Sie auf der Registerkarte Zuordnungen auf
Hinzufügen .Klicken Sie im Feld „Ausführbare Datei" auf „aspnet_isapi.dll" , das sich im Ordner „%Windows-Ordner%\Microsoft.NET\Framework\ FrameworkVersion " befindet.
Geben Sie im Feld „Erweiterung" Ihre Erweiterung ein (z. B. .jpg).
Geben Sie mindestens das Verb „GET" an.
Klicken Sie, um das Kontrollkästchen „Überprüfen, ob Datei vorhanden ist" zu deaktivieren.
Klicken Sie für die restlichen Dialogfelder auf OK .
Schutz klassischer ASP-Seiten mithilfe der Formularauthentifizierung
Der Schutz klassischer ASP-Seiten durch Formularauthentifizierung wird vom Entwurf nicht unterstützt, da ASP und ASP.NET unterschiedliche Handler verwenden. Sie können es jedoch mithilfe von COM-Interop und Webdiensten zum Laufen bringen.
Das folgende Beispiel sollte funktionieren. Dies wäre ziemlich einfach gewesen, wenn man einfach COM Interop verwendet hätte, um die Funktionen des FormsAutentication-Dienstprogramms aufzurufen. Allerdings erfordern die Funktionen einen HttpContext, der nur in einer ASP.NET-Anwendung verfügbar ist.
Um dieses Problem zu umgehen, erstellen Sie einen ASP.NET-Webdienst, der die Validierung des Formularauthentifizierungstickets durchführt.
Verwenden Sie als Ausgangspunkt das ASP.NET-Formularauthentifizierungsbeispiel aus dem folgenden Artikel:
301240 So implementieren Sie die formularbasierte Authentifizierung in Ihrer ASP.NET-Anwendung mithilfe von C#.NET
Erstellen Sie eine Klasse, die ein übergebenes Ticket manuell validiert, den Namen des verwendeten Formularauthentifizierungs-Cookies und die Anmelde-URL zurückgibt (alles, damit der Code mit minimalem Verwaltungsaufwand eigenständig sein kann):
////////////// Beispielcode starten ////////////// //Diese Methode validiert ein von ASP übergebenes Ticket public bool IsAuthenticated(string rawCookieData) { if(rawCookieData.Trim().Length <= 0) falsch zurückgeben; FormsAuthenticationTicket decryptedTicket; versuchen { decryptedTicket = FormsAuthentication.Decrypt(rawCookieData); } fangen { //Fehlerursache oder was auch immer hier protokollieren, wenn Sie möchten falsch zurückgeben; } if (decryptedTicket.Expired) falsch zurückgeben; // Optional können Sie die Methodensignatur in return ändern // das entschlüsselte Ticket und dann können Sie RenewTicketIfOld aufrufen // und dann Code auf der ASP-Seite implementieren, um das Cookie zu aktualisieren // mit dem neuen Ticket. Dies wäre nur dann notwendig, wenn die // Für das Ticket ist ein Timeout festgelegt (dies setzt das Timeout zurück) // siehe die MSDN-Dokumente zu FormsAuthentication.RenewTicketIfOld. return true; } // Die Methode gibt lediglich den Namen des verwendeten Cookies zurück öffentliche Zeichenfolge GetCookieName() { return FormsAuthentication.FormsCookieName.ToString(); } // Methode gibt die in der Umleitung verwendete Anmelde-URL zurück // Dies ist schwieriger, da keine FormsAuth-Hilfsprogrammfunktion verfügbar ist Geben Sie dies zurück, sodass wir uns web.config manuell ansehen müssen privater String GetLoginURL() { string sConfigPath = Server.MapPath(Request.ApplicationPath) + "\\web.config"; XmlDocument doc = new XmlDocument(); doc.Load(sConfigPath); versuchen { XmlNode xmlNodeForms = doc.SelectSingleNode("configuration/system.web/authentication/forms"); return xmlNodeForms.Attributes.GetNamedItem("loginUrl").InnerText; } fangen { throw new System.Exception("error in GetLoginURL()"); } } ////////////// Endbeispiel //////////////
Erstellen Sie eine weitere .NET-Wrapper-Klasse, die diesen Webdienst aufruft (oder erstellen und kompilieren Sie eine Webproxy-Klasse).
Verwenden Sie Regasm.exe und Gacutil.exe, um diese „Wrapper"-Klasse über ComInterop von ASP aus aufrufbar zu machen.
Der ASP-Code würde etwa so aussehen:
Setze oAuthClass = Server.CreateObject("ASPNETFormsAuth.WrapperClass") Wenn nicht oAuthClass.IsAuthenticated(Request.Cookies(oAuthClass.GetCookieName)) Dann Response.Redirect("http://servername/ASPApplicationRoot/" & oAuthClass.GetLoginURL & "?RetrunURL=" & Requset.ServerVariables("URL")) Ende wenn
Weitere Informationen zur Formularauthentifizierung finden Sie in den folgenden Ressourcen:
Passbasierte Authentifizierung
Die passportbasierte Authentifizierung ist ein zentraler Authentifizierungsdienst von Microsoft, der eine einzige Anmeldung und Kernprofildienste für Mitgliedsseiten bietet. Weitere Informationen finden Sie auf der folgenden Microsoft-Website:
Windows-basierte Authentifizierung
ASP.NET verwendet die Windows-Authentifizierung in Verbindung mit der Microsoft Internet Information Services (IIS)-Authentifizierung. Die Authentifizierung wird von IIS auf eine von drei Arten durchgeführt: Basis-, Digest- oder integrierte Windows-Authentifizierung. Wenn die IIS-Authentifizierung abgeschlossen ist, verwendet ASP.NET die authentifizierte Identität, um den Zugriff zu autorisieren. Weitere Informationen finden Sie in den folgenden Ressourcen:
Windows-Authentifizierungsanbieter
323176 So implementieren Sie die Windows-Authentifizierung und -Autorisierung in ASP.NET
Zurück an die Spitze
Genehmigung
Der Zweck der Autorisierung besteht darin, zu bestimmen, ob einer Identität der von einer Ressource angeforderte Zugriffstyp gewährt werden soll. Es gibt zwei grundlegende Möglichkeiten, den Zugriff auf eine bestimmte Ressource zu autorisieren:
Dateiautorisierung
Die Dateiautorisierung erfolgt durch
FileAuthorizationModule und ist aktiv, wenn Sie die Windows-Authentifizierung verwenden. Es führt eine Zugriffskontrolllistenprüfung (ACL) der .aspx- oder .asmx-Handlerdatei durch, um festzustellen, ob ein Benutzer Zugriff haben sollte. Anwendungen können den Identitätswechsel auch nutzen, um Ressourcenprüfungen für Ressourcen durchzuführen, auf die sie zugreifen. Weitere Informationen zum Identitätswechsel finden Sie auf der folgenden Microsoft-Website:URL-Autorisierung
Die URL-Autorisierung wird von durchgeführt
URLAuthorizationModule , das Benutzer und Rollen Teilen des URL-Namespace zuordnet. Dieses Modul implementiert sowohl positive als auch negative Autorisierungsaussagen. Das heißt, das Modul kann verwendet werden, um den Zugriff auf beliebige Teile des URL-Namespace für bestimmte Gruppen, Benutzer oder Rollen selektiv zuzulassen oder zu verweigern.
Weitere Informationen zur Autorisierung finden Sie auf den folgenden Microsoft-Websites:
No comments:
Post a Comment