Kodexempel: ASP.NET anpassad inloggningssida för MVC 3
Uppdaterad: 19 juni 2015
Gäller för: Azure
Det här exemplet illustrerar hur du skapar en anpassad inloggnings- eller startsfärsidentifieringssida i ett ASP.NET MVC3-program som använder Microsoft Azure Active Directory Access Control (även kallat Access Control Service eller ACS). Koden för det här exemplet finns i underkatalogen MVC3CustomSignInPage (C#\Websites\MVC3CustomSignInPage) i Microsoft Azure Active Directory Access Control-kodexempelpaketet (ACS).
Förutsättningar
Om du vill köra det här exemplet behöver du:
Ett konto i Azure Portal och ett Access Control namnområde.
Visual Studio 2010 (valfri version)
Windows Identity Foundation SDK
Mer information finns i KRAV för ACS (https://go.microsoft.com/fwlink/?LinkId=221065).
Konfigurera exemplet
ACS-konfigurationen som krävs för det här exemplet kan utföras med antingen ACS-hanteringsportalen eller ACS-hanteringstjänsten. I det här avsnittet beskrivs båda alternativen.
Alternativ 1: Konfigurera exemplet via ACS-hanteringsportalen
Så här konfigurerar du exemplet i ACS-hanteringsportalen
Gå till Microsoft Azure Management Portal (https://manage.WindowsAzure.com), logga in och klicka sedan på Active Directory. (Felsökningstips: "Active Directory"-objektet saknas eller är inte tillgängligt)
Om du vill skapa ett Access Control namnområde klickar du på Nytt, klickar på App Services, klickar på Access Control och sedan på Snabbskapa. (Eller klicka på Access Control namnområden innan du klickar på Ny.)
Om du vill hantera ett Access Control namnområde väljer du namnområdet och klickar sedan på Hantera. (Eller klicka på Access Control Namnområden, välj namnområdet och klicka sedan på Hantera.)
Den här åtgärden öppnar Access Control servicehanteringsportalen.
Om du vill upprätta relationer med identitetsprovidrar klickar du på Identitetsprovidrar och väljer sedan de identitetsprovidrar som du vill använda, till exempel Google, Yahoo!och Facebook. Mer information om hur du hämtar nödvändiga nycklar för Facebook finns i Så här konfigurerar du Facebook som en identitetsprovider (https://go.microsoft.com/fwlink/?LinkId=221151). Klicka sedan på länken Start i den vänstra navigeringsmenyn på sidan för att återgå till huvudsidan.
Om du vill registrera ditt program med ACS går du till Access Control servicehanteringsportalen och klickar på länken Förlitande parts program på huvudsidan, väljer Lägg till och anger följande information i formuläret:
I fältet Namn anger du ANPASSAD ASPNET MVC3.
I fältet Sfär anger du https://localhost:64000/
I fältet Retur-URL anger du https://localhost:64000/Account/SignIn
I fältet Tokenformat väljer du SAML 2.0.
I avsnittet Identitetsprovidrar väljer du Facebook, Google, Windows Live ID och Yahoo!
I fältet Tokensignering väljer du Använd tjänstnamnområdescertifikat (standard).
Klicka på Spara och navigera sedan tillbaka till huvudsidan.
När ditt program för förlitande part har konfigurerats är det nu dags att skapa regler som fastställer de anspråk som ACS kommer att utfärda till ditt program. I det här exemplet skickar vi igenom alla anspråk som utfärdats av identitetsprovidrar. Om du vill skapa den här regeln klickar du på Regelgrupper, som finns på huvudsidan, och klickar på gruppen Standardregel för ASPNET MVC3 Anpassad regelgrupp.
Klicka på länken Generera längst ned på sidan. Se till att Facebook, Yahoo och väljs och klicka på Generera.
Öppna Visual Studio när ACS har konfigurerats.
Alternativ 2: Konfigurera exemplet med hjälp av ACS-hanteringstjänsten
Den Visual Studio exempellösningen har ett kommandoradsprogram med namnet ConfigureSample som använder ACS-hanteringstjänsten och de vanliga hjälpkomponenter som definierats i Common-klassbiblioteket. Det här programmet kan användas för att konfigurera ditt Access Control namnområde för användning med det här exemplet.
Så här konfigurerar du exemplet med hjälp av ACS-hanteringstjänsten
Uppdatera Common-klassbiblioteket med information om ditt Access Control namnområde. Öppna SamplesConfiguration.cs och ange följande information:
ServiceNamespace – det här är namnområdet som används med ACS.
ManagementServiceIdentityName – det här är namnet på ett hanteringstjänstkonto.
ManagementServiceIdentityKey – det här är lösenordet som är associerat med hanteringstjänstkontot.
AcsHostUrl – det här är värdnamnet för ACS.
I projektet ConfigureSample öppnar du Program.cs och anger följande information:
applicationId – Det här är ditt Facebook-programs program-ID.
applicationSecret – Det här är ditt Facebook-programs programhemlighet.
Mer information om hur du hämtar dessa nycklar finns i Så här konfigurerar du Facebook som en identitetsprovider (https://go.microsoft.com/fwlink/?LinkId=221151).
Kör ConfigureSample-programmet i Visual Studio, som konfigurerar ACS för att köra det här exemplet.
Köra exemplet
Så här kör du exemplet
Öppna exemplet i Websites\MVC3CustomSignInPage\MVC3CustomSignInPage.sln i Visual Studio.
Om du vill lägga till ACS som STS-referens högerklickar du på MVCCustomSignInPage och väljer Lägg till STS-referens på snabbmenyn.
I dialogrutan anger du webbprogrammets rot i fältet Program-URI och klickar på Nästa. För det här exemplet är det här värdet https://localhost:64000/
Anteckning
Det avslutande snedstrecket är viktigt eftersom det stämmer med de värden som du angav i ACS för den förlitande parten. Guiden utfärdar en varning om att webbplatsen inte använder SSL. Acceptera den här varningen genom att klicka på knappen Ja , men kom ihåg att en produktionswebbplats nästan alltid ska använda SSL för dessa typer av scenarier.
I nästa fönster väljer du alternativknappen Använd befintlig STS och anger URI:n för WS-Federation metadata som publicerats av Access Control namnområdet. Den URI:n finns på portalen under Programintegrering. Om ditt Access Control namnområde är mvc3samples är URI:n https:// mvc3samples.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml. När du har angett det här värdet klickar du på Nästa.
Eftersom webbplatsen inte kräver krypterade token klickar du på Nästa i de återstående dialogrutorna och klickar sedan på Slutför.
Ditt program har nu konfigurerats för att använda ACS med ASP .NET-filtresursskyddet. Vi måste inaktivera det här skyddet så att vi kan använda vår egen anpassade inloggningssida med mer detaljerade MVC3-autentiseringsfilter. Ta bort följande inställning under konfigurationen i filenweb.config:
<location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
Under system.web tar du bort följande inställning:
<authorization> <deny users="?" /> </authorization>
När de här två inställningarna har tagits bort utför ASP .NET ingen autentisering eller auktorisering åt oss.
Tryck på F5 i Visual Studio för att köra programmet. Webbläsaren tar dig till programmets huvudsida.
Klicka på länken Logga in i det övre högra hörnet och välj en identitetsprovider i listan som visas. När du har autentiserats återgår du till startsidan och din användarinformation visas i det övre högra hörnet (observera att det inte finns något användarnamn).
Klicka på Logga ut för att logga ut. Då rensas sessionscookies och du återgår till huvudsidan.
Klicka på länken Katalog . Eftersom du inte längre autentiseras uppmanas du att välja en identitetsprovider för att komma åt sidan Katalog.
Det beror på att katalogsidan (Index i DirectoryController) skyddas via RequireAuthenticationAttribute. När du väljer en identitetsprovider och autentiserar dirigeras du tillbaka till sidan Katalog.