Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
.defaultbereikparameter 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:
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:
Meld u aan bij het Azure-portaal.
Zorg ervoor dat u de map gebruikt die uw Azure AD B2C-tenant bevat. Selecteer op de portalwerkbalk het pictogram Mappen + abonnementen.
Ga op de pagina Portalinstellingen | Directory's en abonnementen naar uw Azure AD B2C-directory in de lijst Directorynaam en selecteer vervolgens Wisselen.
Zoek en selecteer Azure AD B2C in de Azure-portal.
Selecteer App-registraties en selecteer vervolgens Nieuwe registratie.
Voer bij Naam een naam in voor de toepassing (bijvoorbeeld my-api1). Laat de standaardwaarden voor omleidings-URI en ondersteunde accounttypen staan.
Selecteer Registreren.
Nadat de app-registratie is voltooid, selecteert u Overzicht.
Noteer voor later gebruik de waarde van de toepassings-id (client) wanneer u de webtoepassing configureert.
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:
Selecteer de web-API die u hebt gemaakt, bijvoorbeeld my-api1.
Selecteer onder Behereneen API beschikbaar maken.
Selecteer naast URI voor de toepassings-id de link Instellen. Vervang de standaardwaarde (GUID) door een unieke naam (bijvoorbeeld API) en selecteer Opslaan.
Kopieer de URI van de toepassings-id. In de volgende schermopname ziet u hoe u de URI van de toepassings-id kopieert.
Selecteer onder Beherenmanifest om de manifesteditor van de toepassing te openen. Zoek in de editor de
appRolesinstelling, en definiëer app-rollen die zich richten opapplications. Elke app-roldefinitie moet een globale unieke id (GUID) hebben voor deidwaarde. Genereer een nieuwe GUID door de opdracht uit te voerennew-guidin Microsoft PowerShell of een online GUID-generator. Devalueeigenschap van elke app-roldefinitie wordt weergegeven in het bereik, descpclaim. Devalueeigenschap 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" }],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:
- Zoek en selecteer Azure AD B2C in de Azure-portal.
- Selecteer App-registraties en selecteer vervolgens uw bestaande app in de lijst.
- Selecteer In het linkermenu onder Beherenmanifest om de manifesteditor te openen.
- Zoek het element en stel de
accessTokenAcceptedVersionwaarde ervan in op2. - 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:
Zoek en selecteer Azure AD B2C in Azure Portal
Selecteer App-registraties en selecteer vervolgens Nieuwe registratie.
Voer een naam in voor de toepassing. Bijvoorbeeld ClientCredentials_app.
Laat de andere waarden ongewijzigd en selecteer Registreren.
Noteer de toepassings-id (client) voor gebruik in een latere stap.
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.
Selecteer onder Beheren de optie Certificaten en geheimen.
Selecteer nieuwe clientsleutel.
Voer in het vak Beschrijving een beschrijving in voor het clientgeheim (bijvoorbeeld clientsecret1).
Selecteer onder Verloopt een duur waarvoor het geheim geldig is en selecteer vervolgens Toevoegen.
Noteer de waarde van het geheim. U gebruikt deze waarde voor configuratie in een latere stap.
Stap 2.2 De app-machtigingen verlenen voor de web-API
Voer de volgende stappen uit om uw app-machtigingen (App 1) te verlenen:
Selecteer App-registraties en selecteer vervolgens de app die u hebt gemaakt (App 1).
Selecteer onder Beheren de optie API-machtigingen.
Selecteer onder Geconfigureerde machtigingen de optie Een machtiging toevoegen.
Selecteer het tabblad Mijn API's.
Selecteer de API (App 2) waaraan de webtoepassing toegang moet krijgen. Voer bijvoorbeeld my-api1 in.
Selecteer Toepassingsmachtiging.
Onder Machtiging breid app uit en selecteer vervolgens de scopes die u eerder heeft gedefinieerd (bijvoorbeeld app.read en app.write).
Selecteer Machtigingen toevoegen.
Selecteer beheerderstoestemming verlenen voor <uw tenantnaam>.
Selecteer Ja.
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>