Dela via


Konfigurera OAuth 2.0-klientautentiseringsuppgifter i Azure Active Directory B2C

Innan du börjar använder du väljaren Välj en principtyp för att välja den typ av princip som du konfigurerar. Azure Active Directory B2C erbjuder två metoder för att definiera hur användare interagerar med dina program: via fördefinierade användarflöden eller genom fullständigt konfigurerbara anpassade principer. De steg som krävs i den här artikeln skiljer sig åt för varje metod.

Med beviljandeflödet för OAuth 2.0-klientautentiseringsuppgifter kan en app (konfidentiell klient) använda sina egna autentiseringsuppgifter, i stället för att personifiera en användare, för att autentisera när den anropar webbresurser, till exempel REST API. Den här beviljandetypen används ofta för server-till-server-interaktioner som måste köras i bakgrunden, utan direkt interaktion med en användare. Dessa typer av program kallas ofta för daemon eller tjänstkonton.

I flödet för klientautentiseringsuppgifter beviljas behörigheter direkt till själva programmet av en administratör. När appen visar en token för en resurs framtvingar resursen att själva appen har behörighet att utföra en åtgärd eftersom det inte finns någon användare som är involverad i autentiseringen. Den här artikeln beskriver de steg som krävs för att auktorisera ett program för att anropa ett API och hur du hämtar de token som behövs för att anropa api:et.

Den här funktionen är i offentlig förhandsversion.

Översikt över appregistrering

Om du vill att din app ska kunna logga in med klientautentiseringsuppgifter och sedan anropa ett webb-API registrerar du två program i Azure AD B2C-katalogen.

  • Med programregistreringen kan din app logga in med Azure AD B2C. Appregistreringsprocessen genererar ett program-ID, även kallat klient-ID, som unikt identifierar din app. Du kan också skapa en klienthemlighet som din app använder för att på ett säkert sätt hämta token.

  • Med registreringen av webb-API :et kan din app anropa ett säkert webb-API. Registreringen innehåller webb-API-omfång. Omfången ger ett sätt att hantera behörigheter till skyddade resurser, till exempel ditt webb-API. Sedan beviljar du programbehörigheter till webb-API-omfången. När en åtkomsttoken begärs anger appen omfångsparametern .default för begäran. Azure AD B2C returnerar webb-API-omfång som beviljats till din app.

Apparkitekturen och registreringarna illustreras i följande diagram:

Diagram of a web app with web A P I call registrations and tokens.

Steg 1: Registrera webb-API-appen

I det här steget registrerar du webb-API:et (App 2) med dess omfång. Senare ger du ditt program (App 1) behörighet till dessa omfång. Om du redan har en sådan appregistrering hoppar du över det här steget och går sedan vidare till nästa steg, Steg 1.1 Definiera webb-API-roller (omfång).

Så här skapar du appregistreringen för webb-API:et (app-ID: 2):

  1. Logga in på Azure-portalen.

  2. Kontrollera att du använder katalogen som innehåller din Azure AD B2C-klientorganisation. Välj ikonen Kataloger + prenumerationer i portalens verktygsfält.

  3. I portalinställningarna | Sidan Kataloger + prenumerationer, leta upp din Azure AD B2C-katalog i listan Katalognamn och välj sedan Växla.

  4. I Azure-portalen söker du efter och väljer Azure AD B2C.

  5. Välj Appregistreringar och välj sedan Ny registrering.

  6. Som Namn anger du ett namn för programmet (till exempel my-api1). Lämna standardvärdena för omdirigerings-URI och kontotyper som stöds.

  7. Välj Registrera.

  8. När appregistreringen är klar väljer du Översikt.

  9. Registrera program-ID-värdet (klient) för senare användning när du konfigurerar webbprogrammet.

    Screenshot that demonstrates how to get a web A P I application I D.

Steg 1.1 Definiera webb-API-roller (omfång)

I det här steget konfigurerar du webb-API :ns program-ID-URI och definierar sedan Approller. Approllerna, som används av OAuth 2.0-omfången och definieras för en programregistrering som representerar ditt API. Programmet använder program-ID-URI:n med omfånget .default . Följ dessa steg för att definiera approller:

  1. Välj det webb-API som du skapade, till exempel my-api1.

  2. Under Hantera väljer du Exponera ett API.

  3. Bredvid Program-ID-URI väljer du länken Ange. Ersätt standardvärdet (GUID) med ett unikt namn (till exempel api) och välj sedan Spara.

  4. Kopiera program-ID-URI:n. Följande skärmbild visar hur du kopierar program-ID-URI:n.

    Screenshot shows how to copy the application I D.

  5. Under Hantera väljer du Manifest för att öppna programmanifestredigeraren. Leta upp inställningen i appRoles redigeraren och definiera approller som är avsedda applicationsför . Varje approlldefinition måste ha en global unik identifierare (GUID) för dess id värde. Generera ett nytt GUID genom att köra new-guidkommandot i Microsoft PowerShell eller en GUID-generator online. Egenskapen value för varje approlldefinition visas i omfånget, anspråket scp . Egenskapen value får inte innehålla blanksteg. I följande exempel visas två approller, läsa och skriva:

    "appRoles": [
    {
      "allowedMemberTypes": ["Application"],
      "displayName": "Read",
      "id": "d6a15e20-f83c-4264-8e61-5082688e14c8",
      "isEnabled": true,
      "description": "Readers have the ability to read tasks.",
      "value": "app.read"
    },
    {
      "allowedMemberTypes": ["Application"],
      "displayName": "Write",
      "id": "204dc4ab-51e1-439f-8c7f-31a1ebf3c7b9",
      "isEnabled": true,
      "description": "Writers have the ability to create tasks.",
      "value": "app.write"
    }],
    
  6. Längst upp på sidan väljer du Spara för att spara manifeständringarna.

Steg 2: Registrera ett program

Om du vill att din app ska kunna logga in med Azure AD B2C med hjälp av autentiseringsuppgifter för klienten kan du använda ett befintligt program eller registrera ett nytt (App 1).

Om du använder en befintlig app kontrollerar du att appens accessTokenAcceptedVersion är inställd på 2:

  1. I Azure-portalen söker du efter och väljer Azure AD B2C.
  2. Välj Appregistreringar och välj sedan din befintliga app i listan.
  3. I den vänstra menyn, under Hantera, väljer du Manifest för att öppna manifestredigeraren.
  4. Leta upp elementet accessTokenAcceptedVersion och ange dess värde till 2.
  5. Välj Spara överst på sidan för att spara ändringarna.

Följ dessa steg för att skapa en ny registrering av webbappar:

  1. I Azure-portalen söker du efter och väljer Azure AD B2C

  2. Välj Appregistreringar och välj sedan Ny registrering.

  3. Ange ett namn för programmet. Till exempel ClientCredentials_app.

  4. Lämna de andra värdena som de är och välj sedan Registrera.

  5. Registrera program-ID :t (klient) för användning i ett senare steg.

    Screenshot shows how to get the application I D.

Steg 2.1 Skapa en klienthemlighet

Skapa en klienthemlighet för det registrerade programmet. Din app använder klienthemligheten för att bevisa sin identitet när den begär token.

  1. Under Hantera väljer du Certifikathemligheter&.

  2. Välj Ny klienthemlighet.

  3. I rutan Beskrivning anger du en beskrivning av klienthemligheten (till exempel clientsecret1).

  4. Under Upphör att gälla väljer du en varaktighet för vilken hemligheten är giltig och väljer sedan Lägg till.

  5. Registrera hemlighetens värde. Du använder det här värdet för konfiguration i ett senare steg.

    Screenshot shows how to copy the application secret.

Steg 2.2 Bevilja appbehörigheter för webb-API:et

Följ dessa steg för att ge din app (App 1) behörighet:

  1. Välj Appregistreringar och välj sedan den app som du skapade (App 1).

  2. Under Hantera väljer du API-behörigheter.

  3. Under Konfigurerade behörigheter väljer du Lägg till en behörighet.

  4. Välj fliken Mina API:er .

  5. Välj det API (app 2) som webbprogrammet ska beviljas åtkomst till. Ange till exempel my-api1.

  6. Välj Programbehörighet.

  7. Under Behörighet expanderar du appen och väljer sedan de omfång som du definierade tidigare (till exempel app.read och app.write).

    Screenshot shows how to grant the application A P I permissions.

  8. Välj Lägg till behörigheter.

  9. Välj Bevilja administratörsmedgivande för< ditt klientnamn>.

  10. Välj Ja.

  11. Välj Uppdatera och kontrollera sedan att Beviljad för ... visas under Status för båda omfången.

Steg 3: Hämta en åtkomsttoken

Det finns inga specifika åtgärder för att aktivera klientautentiseringsuppgifterna för användarflöden eller anpassade principer. Både Azure AD B2C-användarflöden och anpassade principer stöder flödet för klientautentiseringsuppgifter. Om du inte redan har gjort det skapar du ett användarflöde eller en anpassad princip. Använd sedan ditt favorit-API-utvecklingsprogram för att generera en auktoriseringsbegäran. Skapa ett anrop som det här exemplet med följande information som brödtext för POST-begäran:

https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token

  • Ersätt <tenant-name> med namnetdin Azure AD B2C-klientorganisation. Exempel: contoso.b2clogin.com
  • Ersätt <policy> med det fullständiga namnet på ditt användarflöde eller din anpassade princip. Observera att alla typer av användarflöden och anpassade principer stöder flödet för klientautentiseringsuppgifter. Du kan använda alla användarflöden eller anpassade principer som du har, eller skapa ett nytt, till exempel registrering eller inloggning.
Tangent Värde
grant_type client_credentials
client_id Klient-ID :t från steg 2 Registrera ett program.
client_secret Värdet Klienthemlighet från steg 2.1 Skapa en klienthemlighet.
omfattning Program-ID-URI:n från steg 1.1 Definiera webb-API-roller (omfång) och .default. Till exempel https://contoso.onmicrosoft.com/api/.default, eller https://contoso.onmicrosoft.com/12345678-0000-0000-0000-000000000000/.default.

Den faktiska POST-begäran ser ut som i följande exempel:

Begäran:

POST /<tenant-name>.onmicrosoft.com/B2C_1A_SUSI/oauth2/v2.0/token HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=33333333-0000-0000-0000-000000000000
&client_secret=FyX7Q~DuPJ...
&scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2F.default

Svar:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5OZDlnUkNWWUc2dUs...",
    "token_type": "Bearer",
    "not_before": 1645172292,
    "expires_in": 3600,
    "expires_on": 1645175892,
    "resource": "33333333-0000-0000-0000-000000000000"
}

Läs mer om anspråk för returåtkomsttoken. I följande tabell visas de anspråk som är relaterade till flödet för klientautentiseringsuppgifter.

Anspråk beskrivning Värde
aud Identifierar den avsedda mottagaren av token. API :ets klient-ID .
sub Tjänstens huvudnamn associerar med programmet som initierade begäran. Det är tjänstens huvudnamn för client_id auktoriseringsbegäran.
azp Behörig part – den part som åtkomsttoken utfärdades till. Klient-ID för programmet som initierade begäran. Det är samma värde som du angav i client_id auktoriseringsbegäran.
scp Den uppsättning omfång som exponeras av ditt program-API (blankstegsgränsare). I flödet för klientautentiseringsuppgifter begär auktoriseringsbegäran om omfånget .default , medan token innehåller listan över omfång som exponeras (och godkänns av appadministratören) av API:et. Exempel: app.read app.write

Steg 3.1 Hämta en åtkomsttoken med skript

Använd följande PowerShell-skript för att testa konfigurationen:

$appId = "<client ID>"
$secret = "<client secret>"
$endpoint = "https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token"
$scope = "<Your API id uri>/.default"
$body = "grant_type=client_credentials&scope=" + $scope + "&client_id=" + $appId + "&client_secret=" + $secret

$token = Invoke-RestMethod -Method Post -Uri $endpoint -Body $body

Använd följande cURL-skript för att testa konfigurationen:

curl --location --request POST 'https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/<policy>/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--form 'grant_type="client_credentials"' \
--form 'client_id="<client ID>"' \
--form 'client_secret="<client secret>"' \
--form 'scope="<Your API id uri>/.default"'

Steg 4: Anpassa token

Den här funktionen är endast tillgänglig för anpassade principer. För installationssteg väljer du Anpassad princip i föregående väljare.

Anpassade principer är ett sätt att utöka processen för utfärdande av token. Om du vill anpassa användarresan för autentiseringsuppgifterna för OAuth 2.0-klienten följer du anvisningarna för hur du konfigurerar en användarresa för klientautentiseringsuppgifter. Lägg sedan till metadata i den JwtIssuer tekniska profilen ClientCredentialsUserJourneyId med en referens till den användarresa du skapade.

I följande exempel visas hur du lägger till den tekniska profilen ClientCredentialsUserJourneyId för token utfärdare.

<TechnicalProfile Id="JwtIssuer">
  <Metadata>
    <Item Key="ClientCredentialsUserJourneyId">ClientCredentialsJourney</Item>
  </Metadata>
</TechnicalProfile>

I följande exempel visas en användarresa för klientautentiseringsuppgifter. De första och sista orkestreringsstegen krävs.

<UserJourneys>
  <UserJourney Id="ClientCredentialsJourney">
    <OrchestrationSteps>
      <!-- [Required] Do the client credentials -->
      <OrchestrationStep Order="1" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="ClientCredSetupExchange" TechnicalProfileReferenceId="ClientCredentials_Setup" />
        </ClaimsExchanges>
      </OrchestrationStep>

      <!-- [Optional] Call a REST API or claims transformation -->
      <OrchestrationStep Order="2" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="TokenAugmentation" TechnicalProfileReferenceId="TokenAugmentation" />
        </ClaimsExchanges>
      </OrchestrationStep>

      <!-- [Required] Issue the access token -->
      <OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys>

Nästa steg

Lär dig hur du konfigurerar ett flöde för lösenordsautentiseringsuppgifter för resursägare i Azure AD B2C