Codebeispiel: ASP.NET MVC 3 Benutzerdefinierte Anmeldeseite
Aktualisiert: 19. Juni 2015
Gilt für: Azure
In diesem Beispiel wird veranschaulicht, wie Sie eine benutzerdefinierte Anmelde- oder Home Realm Discovery-Seite in einer ASP.NET MVC3-Anwendung erstellen, die Microsoft Azure Active Directory Access Control verwendet (auch als Access Control Service oder ACS bezeichnet). Der Code für dieses Beispiel befindet sich im Unterverzeichnis "MVC3CustomSignInPage" (C#\Websites\MVC3CustomSignInPage) des Microsoft Azure Active Directory Access Control (ACS)-Codebeispielpakets.
Voraussetzungen
Für dieses Beispiel benötigen Sie Folgendes:
Ein Konto im Azure-Portal und einem Access Control Namespace.
Visual Studio 2010 (alle Versionen)
Windows Identity Foundation SDK
Weitere Details finden Sie unter ACS-Voraussetzungen (https://go.microsoft.com/fwlink/?LinkId=221065).
Konfigurieren des Beispiels
Die für dieses Beispiel erforderliche ACS-Konfiguration kann entweder über das ACS-Verwaltungsportal oder den ACS-Verwaltungsdienst ausgeführt werden. In diesem Thema werden beide Optionen beschrieben.
Option 1: Konfigurieren des Beispiels über das ACS-Verwaltungsportal
So konfigurieren Sie das Beispiel im ACS-Verwaltungsportal
Wechseln Sie zum Microsoft Azure Verwaltungsportal (https://manage.WindowsAzure.com), melden Sie sich an, und klicken Sie dann auf Active Directory. (Problembehandlungstipps: Das Element "Active Directory" fehlt oder nicht verfügbar)
Um einen Namespace für die Zugriffssteuerung zu erstellen, klicken Sie auf Neu, auf Anwendungsdienste, auf Zugriffssteuerung und dann auf Schnellerfassung. (Oder klicken Sie auf Namespaces für die Zugriffssteuerung und dann auf Neu.)
Um einen Namespace für die Zugriffssteuerung zu verwalten, wählen Sie den Namespace aus und klicken Sie dann auf Verwalten. (Oder klicken Sie auf Namespaces für die Zugriffssteuerung, wählen Sie den Namespace aus und klicken Sie dann auf Verwalten.)
Durch diese Aktion wird das Access Control Service-Verwaltungsportal geöffnet.
Um Beziehungen mit den Identitätsanbietern einzurichten, klicken Sie auf Identitätsanbieter, und wählen Sie dann die Identitätsanbieter aus, die sie verwenden möchten z. B. Google, Yahoo! und Facebook. Weitere Informationen zum Abrufen der erforderlichen Schlüssel für Facebook finden Sie unter How To: Configure Facebook as an Identity Provider (https://go.microsoft.com/fwlink/?LinkId=221151). Klicken Sie dann im linken Navigationsmenü der Seite auf den Link Start, um zur Hauptseite zurückzukehren.
Um Ihre Anwendung mit ACS zu registrieren, klicken Sie im Access Control Dienstverwaltungsportal auf den Link "Vertrauende Parteienanwendungen" auf der Hauptseite, wählen Sie "Hinzufügen" aus, und geben Sie die folgenden Informationen im Formular ein:
Geben Sie im Feld Name die Angabe ASPNET MVC3 Custom ein.
Geben Sie im Feld "Bereich " die Eingabetaste ein. https://localhost:64000/
Geben Sie im Feld "Rückgabe-URL " die Eingabetaste ein. https://localhost:64000/Account/SignIn
Wählen Sie im Feld Tokenformat die Option SAML 2.0 aus.
Wählen Sie im Abschnitt Identitätsanbieter die Anbieter Facebook, Google, Windows Live ID und Yahoo! aus.
Wählen Sie im Feld Tokensignatur die Option Dienstnamespacezertifikat verwenden (Standard) aus.
Klicken Sie auf Speichern, und navigieren Sie dann zurück zur Hauptseite.
Mit ihrer konfigurierten Vertrauensparteianwendung ist es jetzt zeit, die Regeln zu erstellen, die die Ansprüche bestimmen, die ACS für Ihre Anwendung ausgibt. In diesem Beispiel werden alle vom Identitätsanbieter ausgestellten Ansprüche mithilfe von Pass-Through übergeben. Klicken Sie zum Erstellen dieser Regel auf der Hauptseite auf Regelgruppen, und klicken Sie dann auf Standardregelgruppe für ASPNET MVC3 Custom.
Klicken Sie am unteren Rand der Seite auf den Link Generieren. Stellen Sie sicher, dass Facebook, Yahoo und ausgewählt sind und auf "Generieren" klicken.
Wenn ACS konfiguriert ist, öffnen Sie Visual Studio.
Option 2: Konfigurieren des Beispiels mithilfe des ACS-Verwaltungsdiensts
Die Visual Studio Beispiellösung verfügt über eine Befehlszeilenanwendung namens ConfigureSample, die den ACS-Verwaltungsdienst und die in der Allgemeinen Klassenbibliothek definierten Hilfsmittel verwendet. Diese Anwendung kann verwendet werden, um Ihren Access Control Namespace für die Verwendung mit diesem Beispiel zu konfigurieren.
So konfigurieren Sie das Beispiel mithilfe des ACS-Verwaltungsdiensts
Aktualisieren Sie die Allgemeine Klassenbibliothek mit Informationen zu Ihrem Access Control Namespace. Öffnen Sie SamplesConfiguration.cs, und geben Sie dann die folgenden Informationen ein:
ServiceNamespace – Dies ist der Namespace, der mit ACS verwendet wird.
ManagementServiceIdentityName – Dies ist der Kontoname des Verwaltungsdiensts.
ManagementServiceIdentityKey – Dies ist das Kennwort, das dem Verwaltungsdienstkonto zugeordnet ist.
AcsHostUrl – Dies ist der Hostname von ACS.
Öffnen Sie im Projekt ConfigureSample die Datei Program.cs, und geben Sie dann die folgenden Informationen ein:
applicationId – Dies ist die Anwendungs-ID der Facebook-Anwendung.
applicationSecret – Dies ist das Anwendungsgeheimnis der Facebook-Anwendung.
Ausführliche Informationen zum Abrufen dieser Schlüssel finden Sie unter How To: Konfigurieren von Facebook als Identitätsanbieter (https://go.microsoft.com/fwlink/?LinkId=221151).
Führen Sie die ConfigureSample-Anwendung in Visual Studio aus, die ACS so konfiguriert, dass dieses Beispiel ausgeführt wird.
Ausführen des Beispiels
So führen Sie das Beispiel aus
Öffnen Sie das Beispiel in Websites\MVC3CustomSignInPage\MVC3CustomSignInPage.sln in Visual Studio.
Um ACS als STS-Referenz hinzuzufügen, klicken Sie mit der rechten Maustaste auf MVCCustomSignInPage, und wählen Sie "STS-Referenz hinzufügen" im Kontextmenü aus.
Geben Sie im Dialogfeld den Stamm der Webanwendung in das Feld Anwendungs-URI ein, und klicken Sie dann auf Weiter. Für dieses Beispiel ist dieser Wert https://localhost:64000/
Hinweis
Die nachgestellte Strichstriche ist wichtig, da sie sich mit den Werten, die Sie in ACS für Ihre vertrauende Partei eingegeben haben, angibt. Der Assistent gibt eine Warnung aus, dass Ihre Website kein SSL verwendet. Akzeptieren Sie diese Warnung, indem Sie auf die Schaltfläche Ja klicken. Denken Sie jedoch daran, dass eine Produktionswebsite für diese Szenarien so gut wie immer SSL verwenden sollte.
Wählen Sie im nächsten Fenster die Schaltfläche "Vorhandene STS verwenden" aus, und geben Sie den URI der von Ihrem Access Control Namespace veröffentlichten WS-Federation Metadaten ein. Sie finden diesen URI im Portal unter Anwendungsintegration. Wenn Ihr Access Control Namespace mvc3samples ist, ist der URI https:// mvc3samples.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml. Nachdem Sie diesen Wert eingegeben haben, klicken Sie auf Weiter.
Da Ihre Website keine verschlüsselten Token erfordert, klicken Sie in den verbleibenden Dialogfeldern auf Weiter, und klicken Sie dann auf Fertig stellen.
Ihre Anwendung ist jetzt so konfiguriert, dass ACS mit dem ASP .NET-Ressourcenschutz verwendet wird. Sie müssen diesen Schutz deaktivieren, damit Sie Ihre eigene benutzerdefinierte Anmeldeseite mit detaillierteren MVC3-Authentifizierungsfiltern verwenden können. Löschen Sie in der Datei web.config unter configuration die folgende Einstellung:
<location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
Löschen Sie unter system.web die folgende Einstellung:
<authorization> <deny users="?" /> </authorization>
Nachdem diese beiden Einstellungen entfernt wurden, führt ASP .NET keine Authentifizierung oder Autorisierung in Ihrem Auftrag aus.
Drücken Sie F5 in Visual Studio, um die Anwendung auszuführen. Ihr Browser navigiert zur Hauptseite der Anwendung.
Klicken Sie auf den Link Anmelden in oberen rechten Ecke, und wählen Sie dann einen Identitätsanbieter aus der angezeigten Liste aus. Nach der Authentifizierung kehren Sie zur Startseite zurück, und Ihre Benutzerinformationen werden in der oberen rechten Ecke angezeigt (beachten Sie, dass kein Benutzername angegeben wird).
Klicken Sie auf Anmelden, um sich abzumelden. Auf diese Weise werden die Sitzungscookies gelöscht, und Sie gelangen erneut auf die Hauptseite.
Klicken auf den Link Verzeichnis. Da Sie nicht mehr authentifiziert sind, werden Sie aufgefordert, einen Identitätsanbieter für den Zugriff auf die Seite Verzeichnis auszuwählen.
Dies geschieht, weil die Seite Verzeichnis (Index in DirectoryController) mithilfe von RequireAuthenticationAttribute geschützt ist. Nachdem Sie einen Identitätsanbieter ausgewählt und sich authentifiziert haben, werden Sie erneut an die Seite Verzeichnis weitergeleitet.