Delen via


Stroom voor OAuth 2.0-clientreferenties instellen in Azure Active Directory B2C

Belangrijk

Vanaf 1 mei 2025 is Azure AD B2C niet meer beschikbaar voor nieuwe klanten. Meer informatie vindt u in onze veelgestelde vragen.

Voordat u begint, gebruikt u de selector Een beleidstype kiezen boven aan deze pagina om het type beleid te kiezen dat u instelt. U kunt in Azure Active Directory B2C op twee manieren definiëren hoe gebruikers met uw toepassingen communiceren: via vooraf gedefinieerde gebruikersstromen of via volledig configureerbaar aangepast beleid. De stappen die in dit artikel zijn vereist, verschillen voor elke methode.

Met de OAuth 2.0-clientreferenties-stroom kan een app (vertrouwelijke client) zijn eigen referenties gebruiken, in plaats van een gebruiker te imiteren, om zich te authentiseren bij het aanroepen van webresources, zoals een REST API. Dit type toekenning wordt vaak gebruikt voor server-naar-server-interacties die op de achtergrond moeten worden uitgevoerd, zonder directe interactie met een gebruiker. Deze typen toepassingen worden vaak daemons of serviceaccounts genoemd.

In de stroom met clientreferenties worden machtigingen rechtstreeks aan de toepassing zelf verleend door een beheerder. Wanneer de app een token aan een resource presenteert, dwingt de resource af dat de app zelf autorisatie heeft om een actie uit te voeren, omdat er geen gebruiker betrokken is bij de verificatie. In dit artikel worden de stappen beschreven die nodig zijn om een toepassing te autoriseren om een API aan te roepen en hoe u de tokens kunt ophalen die nodig zijn om die API aan te roepen.

Opmerking

Deze functie is in openbare preview.

Overzicht van app-registratie

Als u wilt dat uw app zich aanmeldt met clientreferenties en vervolgens een web-API aanroept, registreert u twee toepassingen in de Azure AD B2C-directory.

  • Met de toepassingsregistratie kan uw app zich aanmelden met Azure AD B2C. Het app-registratieproces genereert een toepassings-id, ook wel client-id genoemd, waarmee uw toepassing op unieke wijze wordt aangeduid. U maakt ook een clientgeheim dat door uw app wordt gebruikt om de tokens veilig te verkrijgen.

  • Met de registratie van een web-API kan de app een beveiligde web-API aanroepen. De registratie omvat de web-API-bereiken. De bereiken bieden een manier om machtigingen tot beveiligde resources te beheren, zoals uw web-API. Vervolgens verleent u uw toepassingsmachtigingen aan de web-API-bereiken. Wanneer een toegangstoken wordt aangevraagd, geeft uw app de .default bereikparameter van de aanvraag op. Azure AD B2C retourneert de web-API-bereiken die aan uw app zijn verleend.

De app-architectuur en -registraties worden geïllustreerd in het volgende diagram:

Diagram van een web-app met API-aanroepen, registraties en tokens.

Stap 1: De web-API-app registreren

In deze stap registreert u de web-API (App 2) met zijn scopen. Later geeft u uw toepassing (App 1) toestemming voor deze toepassingsbereiken. Als u al een dergelijke app-registratie hebt, slaat u deze stap over en gaat u naar de volgende stap, stap 1.1 Web-API-rollen (bereiken) definiëren.

Voer de volgende stappen uit om de web-API-app (app-id: 2) te registreren:

  1. Meld u aan bij het Azure-portaal.

  2. Zorg ervoor dat u de map gebruikt die uw Azure AD B2C-tenant bevat. Selecteer op de portalwerkbalk het pictogram Mappen + abonnementen.

  3. Ga op de pagina Portalinstellingen | Directory's en abonnementen naar uw Azure AD B2C-directory in de lijst Directorynaam en selecteer vervolgens Wisselen.

  4. Zoek en selecteer Azure AD B2C in de Azure-portal.

  5. Selecteer App-registraties en selecteer vervolgens Nieuwe registratie.

  6. Voer bij Naam een naam in voor de toepassing (bijvoorbeeld my-api1). Laat de standaardwaarden voor omleidings-URI en ondersteunde accounttypen staan.

  7. Selecteer Registreren.

  8. Nadat de app-registratie is voltooid, selecteert u Overzicht.

  9. Noteer voor later gebruik de waarde van de toepassings-id (client) wanneer u de webtoepassing configureert.

    Schermopname waarin wordt getoond hoe u een web-API-toepassings-id kunt krijgen.

Stap 1.1 Web-API-rollen (bereiken) definiëren

In deze stap configureert u de URI voor de web-API-toepassings-id en definieert u vervolgens app-rollen. De app-rollen die worden gebruikt door de OAuth 2.0 scopes en zijn gedefinieerd bij een toepassingsregistratie die uw API vertegenwoordigt. Uw toepassing gebruikt de toepassings-ID URI met het .default bereik. Volg deze stappen om app-rollen te definiëren:

  1. Selecteer de web-API die u hebt gemaakt, bijvoorbeeld my-api1.

  2. Selecteer onder Behereneen API beschikbaar maken.

  3. Selecteer naast URI voor de toepassings-id de link Instellen. Vervang de standaardwaarde (GUID) door een unieke naam (bijvoorbeeld API) en selecteer Opslaan.

  4. Kopieer de URI van de toepassings-id. In de volgende schermopname ziet u hoe u de URI van de toepassings-id kopieert.

    De schermafbeelding toont hoe je de toepassing-ID kunt kopiëren.

  5. Selecteer onder Beherenmanifest om de manifesteditor van de toepassing te openen. Zoek in de editor de appRoles instelling, en definiëer app-rollen die zich richten op applications. Elke app-roldefinitie moet een globale unieke id (GUID) hebben voor de id waarde. Genereer een nieuwe GUID door de opdracht uit te voeren new-guidin Microsoft PowerShell of een online GUID-generator. De value eigenschap van elke app-roldefinitie wordt weergegeven in het bereik, de scp claim. De value eigenschap mag geen spaties bevatten. In het volgende voorbeeld ziet u twee app-rollen, lezen en schrijven:

    "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. Selecteer Boven aan de pagina Opslaan om de manifestwijzigingen op te slaan.

Stap 2: Een toepassing registreren

Als u wilt dat uw app zich kan aanmelden met Azure AD B2C met behulp van clientreferentiestroom, kunt u een bestaande toepassing gebruiken of een nieuwe toepassing registreren (App 1).

Als u een bestaande app gebruikt, controleert u of de app accessTokenAcceptedVersion is ingesteld op 2:

  1. Zoek en selecteer Azure AD B2C in de Azure-portal.
  2. Selecteer App-registraties en selecteer vervolgens uw bestaande app in de lijst.
  3. Selecteer In het linkermenu onder Beherenmanifest om de manifesteditor te openen.
  4. Zoek het element en stel de accessTokenAcceptedVersion waarde ervan in op 2.
  5. Selecteer Boven aan de pagina Opslaan om de wijzigingen op te slaan.

Voer de volgende stappen uit om een nieuwe web-app-registratie te maken:

  1. Zoek en selecteer Azure AD B2C in Azure Portal

  2. Selecteer App-registraties en selecteer vervolgens Nieuwe registratie.

  3. Voer een naam in voor de toepassing. Bijvoorbeeld ClientCredentials_app.

  4. Laat de andere waarden ongewijzigd en selecteer Registreren.

  5. Noteer de toepassings-id (client) voor gebruik in een latere stap.

    De schermafbeelding toont hoe je de toepassings-ID kunt verkrijgen.

Stap 2.1 Een clientgeheim maken

Maak een clientgeheim voor de geregistreerde toepassing. Uw app gebruikt het clientgeheim om de identiteit te bewijzen wanneer er tokens worden aangevraagd.

  1. Selecteer onder Beheren de optie Certificaten en geheimen.

  2. Selecteer nieuwe clientsleutel.

  3. Voer in het vak Beschrijving een beschrijving in voor het clientgeheim (bijvoorbeeld clientsecret1).

  4. Selecteer onder Verloopt een duur waarvoor het geheim geldig is en selecteer vervolgens Toevoegen.

  5. Noteer de waarde van het geheim. U gebruikt deze waarde voor configuratie in een latere stap.

    Schermopname van het kopiëren van het toepassingsgeheim.

Stap 2.2 De app-machtigingen verlenen voor de web-API

Voer de volgende stappen uit om uw app-machtigingen (App 1) te verlenen:

  1. Selecteer App-registraties en selecteer vervolgens de app die u hebt gemaakt (App 1).

  2. Selecteer onder Beheren de optie API-machtigingen.

  3. Selecteer onder Geconfigureerde machtigingen de optie Een machtiging toevoegen.

  4. Selecteer het tabblad Mijn API's.

  5. Selecteer de API (App 2) waaraan de webtoepassing toegang moet krijgen. Voer bijvoorbeeld my-api1 in.

  6. Selecteer Toepassingsmachtiging.

  7. Onder Machtiging breid app uit en selecteer vervolgens de scopes die u eerder heeft gedefinieerd (bijvoorbeeld app.read en app.write).

    Schermopname die laat zien hoe u de toepassing A P I-machtigingen kunt verlenen.

  8. Selecteer Machtigingen toevoegen.

  9. Selecteer beheerderstoestemming verlenen voor <uw tenantnaam>.

  10. Selecteer Ja.

  11. Klik op Vernieuwen en controleer vervolgens of Verleend voor... wordt weergegeven onder Status voor beide toepassingsgebieden.

Stap 3: Een toegangstoken verkrijgen

Er zijn geen specifieke acties om de clientreferenties in te schakelen voor gebruikersstromen of aangepaste beleidsregels. Zowel Azure AD B2C-gebruikersstromen als aangepaste beleidsregels ondersteunen de stroom voor clientreferenties. Als u dit nog niet hebt gedaan, maakt u een gebruikersstroom of een aangepast beleid. Gebruik vervolgens uw favoriete API-ontwikkeltoepassing om een autorisatieaanvraag te genereren. Maak een aanroep zoals in dit voorbeeld met de volgende informatie als hoofdtekst van de POST-aanvraag:

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

  • Vervang door <tenant-name> de naam van uw Azure AD B2C-tenant. Bijvoorbeeld: contoso.b2clogin.com.
  • Vervang <policy> door de volledige naam van uw gebruikersstroom of aangepast beleid. Houd er rekening mee dat alle typen gebruikersstromen en aangepaste beleidsregels clientreferentiestroom ondersteunen. U kunt elke gebruikersstroom of aangepast beleid gebruiken dat u hebt, of een nieuw beleid maken, zoals registreren of aanmelden.
Sleutelcode Waarde
toekennings_type client_credentials
client-id De client-id uit stap 2 Registreer een toepassing.
cliëntgeheim De waarde van het clientgeheim uit stap 2.1: maak een clientgeheim.
omvang De URI van de toepassings-id uit stap 1.1 Definieer web-API-rollen (bereiken) en .default. Bijvoorbeeld https://contoso.onmicrosoft.com/api/.default, of https://contoso.onmicrosoft.com/00001111-aaaa-2222-bbbb-3333cccc4444/.default.

De werkelijke POST-aanvraag ziet eruit als in het volgende voorbeeld:

Aanvraag:

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=11112222-bbbb-3333-cccc-4444dddd5555
&client_secret=FyX7Q~DuPJ...
&scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2F.default

Antwoord:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5OZDlnUkNWWUc2dUs...",
    "token_type": "Bearer",
    "not_before": 1645172292,
    "expires_in": 3600,
    "expires_on": 1645175892,
    "resource": "11112222-bbbb-3333-cccc-4444dddd5555"
}

Meer informatie over de claims voor het retourneren van toegangstokens . De volgende tabel bevat de claims die zijn gerelateerd aan de clientreferentiestroom.

Aanspraak Beschrijving Waarde
aud Identificeert de beoogde ontvanger van het token. De client-id van de API.
sub De service-principal koppelt zich aan de toepassing die de aanvraag heeft gestart. Dit is de service-principal van de client_id autorisatieaanvraag.
azp Geautoriseerde partij: de partij waaraan het toegangstoken is uitgegeven. De client-id van de toepassing die de aanvraag heeft gestart. Dit is dezelfde waarde die u hebt opgegeven in de client_id autorisatieaanvraag.
scp De set bereiken die beschikbaar worden gesteld door uw toepassings-API (met een spatie als scheidingsteken). Bij de clientreferentiestroom vraagt het autorisatieverzoek om het .default bereik, terwijl het token de lijst bevat met bereiken die zichtbaar zijn en waarvoor toestemming is gegeven door de app-beheerder door de API. Bijvoorbeeld: app.read app.write.

Stap 3.1 Een toegangstoken verkrijgen met script

Gebruik het volgende PowerShell-script om uw configuratie te testen:

$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

Gebruik het volgende cURL-script om uw configuratie te testen:

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"'

Stap 4: het token aanpassen

Deze functie is alleen beschikbaar voor aangepast beleid. Voor installatiestappen selecteert u Aangepast beleid in de voorgaande selector.

Aangepaste beleidsregels bieden een manier om het tokenuitgifteproces uit te breiden. Als u het gebruikerstraject van de OAuth 2.0-clientreferenties wilt aanpassen, volgt u de richtlijnen voor het configureren van een gebruikerstraject voor clientreferenties. Voeg vervolgens in het JwtIssuer technische profiel de ClientCredentialsUserJourneyId metagegevens toe met een verwijzing naar het gebruikerstraject dat u hebt gemaakt.

In het volgende voorbeeld ziet u hoe u de ClientCredentialsUserJourneyId toevoegt aan het technische profiel van de tokenverlener.

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

In het volgende voorbeeld ziet u een gebruikerstraject met clientreferenties. De eerste en de laatste orkestratiestappen zijn vereist.

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