Dela via


Kodexempel: OAuth 2.0-certifikatautentisering

Uppdaterad: 19 juni 2015

Gäller för: Azure

Det här exemplet visar hur du autentiserar för att Microsoft Azure Active Directory Access Control (även kallat Access Control Service eller ACS) med hjälp av OAuth 2.0-protokollet genom att presentera en SAML-token signerad av ett X.509-certifikat. Det här certifikatet motsvarar en ServiceIdentity som konfigurerats på ACS, och ACS utfärdar en SWT med ett namnidentifieraranspråk för ServiceIdentity. Denna SWT används för att autentisera till en OAuth 2.0-skyddad resurs. Det här exemplet överensstämmer med utkast 13 i OAuth 2.0-protokollet. Koden för det här exemplet finns i underkatalogen OAuth2 (C#\OAuth2) i paketet Microsoft Azure Active Directory Access Control (ACS) Code Samples.

Förutsättningar

Om du vill köra det här exemplet behöver du:

  1. Ett konto i Azure Portal och ett Access Control namnområde.

  2. Visual Studio 2010 (valfri version)

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.

  1. Alternativ 1: Konfigurera exemplet med hjälp av ACS-hanteringsportalen

  2. Alternativ 2: Konfigurera exemplet med hjälp av ACS-hanteringstjänsten

Alternativ 1: Konfigurera exemplet med hjälp av ACS-hanteringsportalen

Så här konfigurerar du exemplet med hjälp av ACS-hanteringsportalen

  1. 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)

  2. 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.)

  3. 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.

  4. Om du vill registrera ditt program med ACS klickar du på Förlitande partprogram, klickar på Lägg till och skriver sedan följande information i formuläret:

    • I fältet Namn anger du OAuth2 RP

    • I fältet Sfär anger du https://oauth2relyingparty/

    • I fältet Tokenformat väljer du SWT

    • Klicka på Generera för att skapa en ny nyckel

    • I fältet Förfallodatum anger du ett lämpligt förfallodatum för nyckeln. Nyckeln är inte längre giltig på det här datumet.

  5. Klicka på Spara.

  6. När den förlitande parten är registrerad ä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 skapar vi en regel som beviljar alla anspråk som genereras av ACS att passera.

    Skapa den här regeln genom att klicka på Regelgrupper och sedan på Standardregelgrupp för OAuth2 RP. Använd följande inställningar för att lägga till en ny regel:

    • I avsnittet Anspråks utfärdare väljer du Access Control Service

    • I avsnittet Typ av indataanspråk väljer du Alla

    • I avsnittet Indataanspråkvärde väljer du Alla

    • I avsnittet Utdataanspråkstyp väljer du Skicka indataanspråkstyp

    • I avsnittet Utdataanspråksvärde väljer du Skicka indataanspråkvärde

  7. Det här exemplet förlitar sig på autentiseringsuppgifter som hanteras av ACS.

    Om du vill konfigurera ett nytt klientcertifikat för klientprogrammet klickar du på Tjänstidentiteter, klickar på Lägg till och skriver sedan ett namn. Lägg till en typ av autentiseringsuppgifter för X.509-certifikat och bläddra efter ACS2ClientCertificate.cer-filen i mappen Certifikat i det här exemplet. Klicka på Spara.

  8. Nu när ACS har konfigurerats öppnar du Visual Studio.

Alternativ 2: Konfigurera exemplet med hjälp av ACS-hanteringstjänsten

Visual Studio-exempellösningen har ett konsolprogram 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

  1. Uppdatera Common-klassbiblioteket med information om ditt Access Control namnområde. Öppna SamplesConfiguration.cs och ange följande:

    • ServiceNamespace – det här är namnet på ditt Access Control namnområde

    • 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

  2. Kör ConfigureSample-programmet i Visual Studio. Detta konfigurerar ACS för att köra det här exemplet.

  3. När ConfigureSample-programmet har slutförts matar det ut den genererade signeringsnyckeln för förlitande part till konsolen. Kopiera den här nyckeln till Urklipp.

Köra exemplet

Så här kör du exemplet

  1. Öppna exemplet i Visual Studio. Förutom ConfigureSample och Common består lösningen av två projekt: ProtectedResourceWebApp och Client.

  2. Om du inte redan har gjort det anger du Access Control namnområdesinformation i Common\SamplesConfiguration.cs. Mer information finns i steg 1 i Alternativ 2: Konfigurera via ACS-hanteringstjänsten ovan. Den här filen används också av klientprojektet .

  3. Öppna filenweb.config i projektet ProtectedResourceWebApp .

  4. Ange din tokensigneringsnyckel i lämpliga AppSettings-element. Om du använde hanteringstjänsten för att konfigurera ACS är det här värdet som du kopierade till Urklipp. Om du vill hämta tokensigneringsnyckeln går du till ACS-portalen och klickar på Certifikat och nycklar. Nedan visas ett kodfragment som visar det här avsnittet i web.config-filen:

    <appSettings>
       <add key="SigningKey" value="...Copy Signing Key..."/>
    </appSettings>
    
  5. Starta ProtectedResourceWebApp för att köra exemplet. En webbläsare visas, men textrutan är tom eftersom webbläsaren inte är autentiserad.

  6. Kör klienten. HTML visas i ett konsolfönster. Observera att HTML-koden anger att användaren är autentiserad och visar anspråken från ACS.