Een app configureren om een externe id-provider te vertrouwen
In dit artikel wordt beschreven hoe u een federatieve identiteitsreferentie voor een toepassing in Microsoft Entra-id beheert. Met de federatieve identiteitsreferentie wordt een vertrouwensrelatie tussen een toepassing en een externe id-provider (IdP) gemaakt.
Vervolgens kunt u een externe softwareworkload configureren om een token uit te wisselen vanuit de externe IdP voor een toegangstoken van het Microsoft Identity Platform. De externe workload heeft toegang tot met Microsoft Entra beveiligde resources zonder dat u geheimen hoeft te beheren (in ondersteunde scenario's). Lees meer over de werkstroom voor tokenuitwisseling over workloadidentiteitsfederatie.
In dit artikel leert u hoe u federatieve identiteitsreferenties maakt, vermeldt en verwijdert in een toepassing in Microsoft Entra-id.
Belangrijke overwegingen en beperkingen
Als u een federatieve identiteitsreferentie wilt maken, bijwerken of verwijderen, moet het account dat de actie uitvoert de rol van toepassingsbeheerder hebben, toepassingsontwikkelaar, cloudtoepassingsbeheerderof toepassingseigenaar. De microsoft.directory/applications/credentials/update machtiging is vereist om een federatieve identiteitsreferentie bij te werken.
Er kunnen maximaal 20 federatieve identiteitsreferenties worden toegevoegd aan een toepassing of door de gebruiker toegewezen beheerde identiteit.
Wanneer u een federatieve identiteitsreferentie configureert, zijn er verschillende belangrijke gegevens die u kunt opgeven:
uitgever en onderwerp zijn de belangrijkste stukken informatie die nodig zijn om de vertrouwensrelatie op te zetten. De combinatie van
issuer
ensubject
moet uniek zijn in de app. Wanneer de externe softwareworkload het Microsoft-identiteitsplatform verzoekt om het externe token uit te wisselen voor een toegangstoken, worden de issuer en subject waarden van de gefedereerde identiteitsreferentie gecontroleerd aan de hand van deissuer
ensubject
claims die zijn opgegeven in het externe token. Als deze validatiecontrole wordt doorgegeven, geeft Microsoft Identity Platform een toegangstoken uit aan de externe softwareworkload.uitgever is de URL van de externe identiteitsprovider en moet overeenkomen met de
issuer
-claim van het externe token dat wordt uitgewisseld. Vereist. Als deissuer
claim voorloop- of volgspaties in de waarde heeft, wordt de tokenuitwisseling geblokkeerd. Dit veld heeft een tekenlimiet van 600 tekens.onderwerp is de identificator van de externe softwareworkload en moet overeenkomen met de
sub
-claim (subject
) van het externe token dat wordt uitgewisseld. subject heeft geen vaste indeling, omdat elke IdP een eigen indeling gebruikt - soms een GUID, soms een met dubbele punten gescheiden ID, soms willekeurige tekenreeksen. Dit veld heeft een tekenlimiet van 600 tekens.Belangrijk
De onderwerp instellingswaarden moeten exact overeenkomen met de configuratie van de GitHub-werkstroomconfiguratie. Anders zal het Microsoft identity platform naar het binnenkomende externe token kijken en de uitwisseling voor een toegangstoken weigeren. Er treedt geen fout op, de uitwisseling mislukt zonder fouten.
Belangrijk
Als u per ongeluk onjuiste externe workloadgegevens toevoegt in de onderwerpinstelling, wordt de federatieve identiteitsreferentie zonder fouten succesvol aangemaakt. De fout wordt pas zichtbaar wanneer de tokenuitwisseling mislukt.
doelgroepen somt de doelgroepen op die in het externe token kunnen voorkomen. Vereist. U moet één doelgroepwaarde toevoegen, met een limiet van 600 tekens. De aanbevolen waarde is 'api://AzureADTokenExchange'. Er wordt opgegeven wat Microsoft Identity Platform moet accepteren in de
aud
claim in het binnenkomende token.naam is de unieke identificatie voor de federatieve identiteitsreferentie. Vereist. Dit veld heeft een tekenlimiet van 3-120 tekens en moet URL-vriendelijk zijn. Alfanumerieke tekens, streepjes of onderstrepingstekens worden ondersteund. Het eerste teken mag alleen alfanumeriek zijn. Het is onveranderbaar nadat deze is gemaakt.
beschrijving is de door de gebruiker verstrekte beschrijving van de federatieve identiteitsreferentie. Facultatief. De beschrijving wordt niet gevalideerd of gecontroleerd door Microsoft Entra-id. Dit veld heeft een limiet van 600 tekens.
Jokertekens worden niet ondersteund in een federatieve id-eigenschapswaarde.
Lees Belangrijke overwegingen en beperkingen voor federatieve identiteitsreferentiesvoor meer informatie over ondersteunde regio's, tijd voor het doorgeven van federatieve referentie-updates, ondersteunde verleners en meer.
Voorwaarden
- Maak een app-registratie of beheerde identiteit in Microsoft Entra ID. Geef uw app toegang tot de Azure-resources waarop uw externe softwarewerkbelasting gericht is.
- Zoek de object-id van de app (niet de toepassings-id (client) die u nodig hebt in de volgende stappen. U vindt de object-id van de app in het Microsoft Entra-beheercentrum. Ga naar de lijst met app-registraties en selecteer uw app-registratie. In Overzichtvindt u de Object-id.
- Haal het onderwerp en verlener informatie op voor uw externe IdP- en softwareworkload. Deze hebt u nodig in de volgende stappen.
Een federatieve identiteitsreferentie configureren in een app
GitHub Actions
Volg deze stappen om een federatieve identiteit toe te voegen voor GitHub-acties:
Zoek uw app-registratie in de ervaring voor app-registraties van het Microsoft Entra-beheercentrum. Selecteer certificaten & geheimen in het linkernavigatievenster, selecteer het tabblad Federatieve referenties en selecteer Referentie toevoegen.
Selecteer in het scenario met federatieve referenties vervolgkeuzelijst GitHub-acties waarmee Azure-resourcesworden geïmplementeerd.
Geef voor uw GitHub Actions-werkstroom de organisatie en opslagplaats op.
Voor entiteitstypeselecteert u Environment, Branch, Pull-aanvraagof Tag en geeft u de waarde op. De waarden moeten exact overeenkomen met de configuratie in de GitHub-werkstroom. Patroonherkenning wordt niet ondersteund voor vertakkingen en tags. Geef een omgeving op als uw push-werkstroom draait op veel takken of tags. Lees de voorbeeldenvoor meer informatie.
Voeg een naam toe voor de federated-credential.
De velden Issuer, Audiencesen Onderwerp-id worden automatisch ingevuld op basis van de waarden die u hebt ingevoerd.
Selecteer Toevoegen om de federatieve referentie te configureren.
Gebruik de volgende waarden uit de registratie van uw Microsoft Entra-toepassing voor uw GitHub-werkstroom:
AZURE_CLIENT_ID
de ID van de toepassing (client)AZURE_TENANT_ID
de Directory-ID (tenant)In de volgende schermopname ziet u hoe u de toepassings-id en tenant-id kopieert.
AZURE_SUBSCRIPTION_ID
uw abonnee-id. Als u de abonnements-id wilt ophalen, opent u Abonnementen in Azure Portal en zoekt u uw abonnement. Kopieer vervolgens de Abonnements-id.
Voorbeelden van entiteitstypen
Voorbeeld van vertakking
Voor een werkstroom die wordt geactiveerd door een push- of pull-aanvraaggebeurtenis in de hoofdbranch:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Geef een entiteitstype van Branch en een GitHub-vertakkingsnaam van 'main'.
Voorbeeld van omgeving
Voor taken die zijn gekoppeld aan een omgeving met de naam 'productie':
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Geef een entiteitstype op van Environment en een GitHub-omgevingsnaam van 'productie'.
Voorbeeld van tag
Bijvoorbeeld voor een werkstroom die wordt geactiveerd door een push naar de tag met de naam 'v2':
on:
push:
# Sequence of patterns matched against refs/heads
branches:
- main
- 'mona/octocat'
- 'releases/**'
# Sequence of patterns matched against refs/tags
tags:
- v2
- v1.*
Geef een entiteitstype op van Tag en een GitHub-tagnaam van "v2".
Voorbeeld van pull-aanvraag
Geef voor een workflow die wordt geactiveerd door een pull-aanvraaggebeurtenis een entiteitstype van Pull-aanvraag op.
Kubernetes
Zoek uw app-registratie in de ervaring voor app-registraties van het Microsoft Entra-beheercentrum. Selecteer certificaten & geheimen in het linkernavigatievenster, selecteer het tabblad Federatieve referenties en selecteer Referentie toevoegen.
Selecteer de Kubernetes die toegang hebben tot Azure-resources scenario in de vervolgkeuzelijst.
Vul de url van de clusteruitgever in, naamruimte, serviceaccountnaamen velden naam:
- URL voor clusterverleners is de OIDC-verlener-URL voor het beheerde cluster of de OIDC Issuer URL voor een zelfbeheerd cluster.
- service-accountnaam is de naam van het Kubernetes-serviceaccount, dat een identiteit biedt voor processen die worden uitgevoerd in een Pod.
- naamruimte is de naamruimte van het serviceaccount.
- Naam is de naam van de federatieve referentie, die later niet kan worden gewijzigd.
Andere id-providers
Zoek uw app-registratie in de ervaring voor app-registraties van het Microsoft Entra-beheercentrum. Selecteer certificaten & geheimen in het linkernavigatievenster, selecteer het tabblad Federatieve referenties en selecteer Referentie toevoegen.
Selecteer het scenario andere uitgever in de vervolgkeuzelijst.
Geef de volgende velden op (met behulp van een softwareworkload die wordt uitgevoerd in Google Cloud als voorbeeld):
- Naam is de naam van de federatieve referentie, die later niet kan worden gewijzigd.
-
onderwerp-id: moet overeenkomen met de
sub
claim in het token dat is uitgegeven door de externe id-provider. In dit voorbeeld met Google Cloud is de unieke id van subject het serviceaccount dat u wilt gebruiken. -
Issuer: moet overeenkomen met de
iss
claim in het token dat is uitgegeven door de externe id-provider. Een URL die voldoet aan de OIDC Discovery-specificatie. Microsoft Entra-id gebruikt deze verlener-URL om de sleutels op te halen die nodig zijn om het token te valideren. Voor Google Cloud is de verlenerhttps://accounts.google.com
.
Federatieve identiteitsreferenties weergeven in een app
Zoek uw app-registratie in de ervaring voor app-registraties van het Microsoft Entra-beheercentrum. Selecteer Certificaten & geheimen in het linkernavigatievenster en selecteer het tabblad Federatieve referenties. De federatieve referenties die in uw app zijn geconfigureerd, worden weergegeven.
Een federatieve identiteitsreferentie uit een app verwijderen
Zoek uw app-registratie in de ervaring voor app-registraties van het Microsoft Entra-beheercentrum. Selecteer Certificaten & geheimen in het linkernavigatievenster en selecteer het tabblad Federatieve referenties. De federatieve referenties die in uw app zijn geconfigureerd, worden weergegeven.
Als u een federatieve identiteitsreferentie wilt verwijderen, selecteert u het pictogram Verwijderen voor de referentie.
Een federatieve identiteitsinloggegevens flexibel instellen (previewversie)
- Navigeer naar Microsoft Entra-id en selecteer de toepassing waar u de federatieve identiteitsreferentie wilt configureren.
- Selecteer in het linker navigatiedeelvenster Certificaten & geheimen.
- Selecteer in het tabblad Federatieve referenties de optie + Referentie toevoegen.
- Selecteer in het venster Een referentie toevoegen dat wordt weergegeven in de vervolgkeuzelijst naast scenario met federatieve referentiesde optie Andere verlener.
- Voer in waarde de overeenkomende claimexpressie in die u wilt gebruiken.
Voorwaarden
- Als u nog geen Azure-account hebt, meld u zich dan aan voor een gratis account voordat u doorgaat.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Quickstart voor Bash in Azure Cloud Shellvoor meer informatie.
Als u cli-referentieopdrachten liever lokaal uitvoert, installeert u de Azure CLI. Als u werkt met Windows of macOS, kunt u Overwegen Om Azure CLI uit te voeren in een Docker-container. Zie Azure CLI uitvoeren in een Docker-containervoor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij de Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in uw terminal om het verificatieproces te voltooien. Zie Aanmelden met de Azure CLI-voor andere aanmeldingsopties.
Wanneer u hierom wordt gevraagd, installeert u de Azure CLI-extensie voor het eerste gebruik. Zie Extensies gebruiken met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Als u een upgrade wilt uitvoeren naar de nieuwste versie, voert u az upgradeuit.
- Een app-registratie maken in Microsoft Entra ID. Geef uw app toegang tot de Azure-resources die door uw externe softwareworkload worden gebruikt.
- Zoek de object-id, app-id (client) of id-URI van de app, die u nodig hebt in de volgende stappen. U vindt deze waarden in het Microsoft Entra-beheercentrum. Ga naar de lijst met geregistreerde toepassingen en selecteer uw app-registratie. Haal in Overzicht->Essentialsde object-id op, toepassings-id (client)-idof URI- toepassings-id op, die u in de volgende stappen nodig hebt.
- Haal de informatie over onderwerp en uitgever op voor uw externe IdP en softwareworkload. Deze informatie hebt u nodig in de volgende stappen.
Een federatieve identiteitsreferentie configureren in een app
Voer de opdracht az ad app federated-credential create uit om een nieuwe federatieve identiteitsreferentie in uw app te maken.
De parameter id
geeft de id-URI, toepassings-id of object-id van de toepassing op. De parameter parameters
geeft de parameters in JSON-indeling op voor het maken van de federatieve identiteitsreferentie.
Voorbeeld van GitHub Actions
De naam specificeert de naam van uw federatieve identiteitsreferentie.
De uitgever identificeert het pad naar de GitHub OIDC-provider: https://token.actions.githubusercontent.com/
. Deze verlener wordt vertrouwd door uw Azure-toepassing.
Het onderwerp identificeert de GitHub-organisatie, opslagplaats en omgeving voor uw GitHub Actions-werkstroom. Wanneer de GitHub Actions-werkstroom Microsoft Identity Platform aanvraagt om een GitHub-token in te wisselen voor een toegangstoken, worden de waarden in de federatieve identiteitsreferentie gecontroleerd op basis van het opgegeven GitHub-token. Voordat Azure een toegangstoken verleent, moet de aanvraag overeenkomen met de hier gedefinieerde voorwaarden.
- Voor taken die zijn gekoppeld aan een omgeving:
repo:< Organization/Repository >:environment:< Name >
- Voor Jobs die niet aan een omgeving zijn gekoppeld, neemt u het verw-pad voor vertakking/tag op, afhankelijk van het verw-pad dat wordt gebruikt voor het activeren van de workflow:
repo:< Organization/Repository >:ref:< ref path>
. Bijvoorbeeldrepo:n-username/ node_express:ref:refs/heads/my-branch
ofrepo:n-username/ node_express:ref:refs/tags/my-tag
. - Voor werkstromen die worden geactiveerd door een pull-aanvraaggebeurtenis:
repo:< Organization/Repository >:pull-request
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Testing",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:octo-org/octo-repo:environment:Production",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
Voorbeeld van Kubernetes
De verlener is de URL van de verlener van uw serviceaccount (de URL van de OIDC-verlener voor het beheerde cluster of de URL van de OIDC-verlener voor een zelfbeheerd cluster).
Het onderwerp is de onderwerpnaam in de tokens die zijn uitgegeven aan het service-account. Kubernetes gebruikt de volgende indeling voor onderwerpnamen: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.
De naam is de naam van de federatieve referentie, die later niet kan worden gewijzigd.
De doelgroepen geven een lijst van de doelgroepen die in het externe token kunnen worden weergegeven. Dit veld is verplicht. De aanbevolen waarde is api://AzureADTokenExchange
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Kubernetes-federated-credential",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
Voorbeeld van andere id-providers
U kunt een federatieve identiteitsreferentie voor een app configureren en een vertrouwensrelatie maken met andere externe id-providers. In het volgende voorbeeld wordt een softwareworkload gebruikt die wordt uitgevoerd in Google Cloud als voorbeeld:
-
name
is de naam van de federatieve referentie, die later niet kan worden gewijzigd. -
id
: de object-id, toepassings-id (client-id) of id-URI van de app. -
subject
: moet overeenkomen met desub
claim in het token dat is uitgegeven door de externe id-provider. In dit voorbeeld met Google Cloud is subject de Unieke ID van het serviceaccount dat u wilt gebruiken. -
issuer
: moet overeenkomen met deiss
claim in het token dat is uitgegeven door de externe id-provider. Een URL die voldoet aan de OIDC Discovery-specificatie. Microsoft Entra-id gebruikt deze verlener-URL om de sleutels op te halen die nodig zijn om het token te valideren. Voor Google Cloud is de verlenerhttps://accounts.google.com
. -
audiences
: geeft een lijst weer van de doelgroepen die in het externe token kunnen worden weergegeven. Dit veld is verplicht. De aanbevolen waarde is 'api://AzureADTokenExchange'.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "GcpFederation",
"issuer": "https://accounts.google.com",
"subject": "112633961854638529490",
"description": "Test GCP federation",
"audiences": [
"api://AzureADTokenExchange"
]
}
Federatieve identiteitsreferenties weergeven in een app
Voer de az ad app federated-credential list opdracht uit om de federatieve identiteitsreferenties in jouw app weer te geven.
De parameter id
geeft de id-URI, toepassings-id of object-id van de toepassing op.
az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444
Een federatieve identiteitsreferentie ophalen in een app
Voer de az ad app federated-credential show opdracht uit om een federatieve identiteitsreferentie op te halen in uw app.
De parameter id
geeft de id-URI, toepassings-id of object-id van de toepassing op.
De federated-credential-id
geeft de id of naam van de federatieve identiteitsreferentie op.
az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Een federatieve identiteitsreferentie uit een app verwijderen
Voer de opdracht az ad app federated-credential delete uit om een federatieve identiteitsreferentie uit uw app te verwijderen.
De parameter id
geeft de id-URI, toepassings-id of object-id van de toepassing op.
De federated-credential-id
geeft de id of naam van de federatieve identiteitsreferentie op.
az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Voorwaarden
- Als u de voorbeeldscripts wilt uitvoeren, hebt u twee opties:
- Gebruik Azure Cloud Shell-, die u kunt openen met behulp van de knop Try It in de rechterbovenhoek van codeblokken.
- Voer scripts lokaal uit met Azure PowerShell, zoals beschreven in de volgende sectie.
- Een app-registratie maken in Microsoft Entra ID. Geef uw app toegang tot de Azure-resources waarop uw externe softwareworkload gericht is.
- Zoek de object-id van de app (niet de toepassings-id (client) die u nodig hebt in de volgende stappen. U vindt de object-id van de app in het Microsoft Entra-beheercentrum. Ga naar de lijst met geregistreerde toepassingen en selecteer uw app-registratie. Zoek in Overzicht->Essentialsde Object-ID.
- Haal de informatie over het onderwerp en de uitgever op voor uw externe IdP en softwareworkload. Deze hebt u nodig in de volgende stappen.
Azure PowerShell lokaal configureren
Als u Azure PowerShell lokaal wilt gebruiken voor dit artikel in plaats van Cloud Shell te gebruiken:
Installeer de nieuwste versie van Azure PowerShell als u dat nog niet hebt gedaan.
Meld u aan bij Azure.
Connect-AzAccount
Installeer de nieuwste versie van PowerShellGet.
Install-Module -Name PowerShellGet -AllowPrerelease
Mogelijk moet u, nadat u deze opdracht hebt uitgevoerd, de huidige PowerShell-sessie
Exit
voor de volgende stap.Installeer de voorlopige versie van de
Az.Resources
-module om de federatieve identiteitsreferentiebewerkingen in dit artikel uit te voeren.Install-Module -Name Az.Resources -AllowPrerelease
Een federatieve identiteitsreferentie configureren in een app
Voer de cmdlet New-AzADAppFederatedCredential uit om een nieuwe federatieve identiteitsreferentie voor een toepassing te maken.
Voorbeeld van GitHub Actions
- ApplicationObjectId: de object-id van de app (niet de toepassings-id (client) die u eerder hebt geregistreerd in Microsoft Entra ID.
- Issuer GitHub identificeert als de externe tokenverlener.
-
onderwerp identificeert de GitHub-organisatie, opslagplaats en omgeving voor uw GitHub Actions-werkstroom. Wanneer de GitHub Actions-werkstroom Microsoft Identity Platform aanvraagt om een GitHub-token in te wisselen voor een toegangstoken, worden de waarden in de federatieve identiteitsreferentie gecontroleerd op basis van het opgegeven GitHub-token.
- Voor taken die zijn gekoppeld aan een omgeving:
repo:< Organization/Repository >:environment:< Name >
- Voor taken die niet aan een omgeving zijn gekoppeld, neemt u het ref-pad voor branch/tag op op basis van het ref-pad dat wordt gebruikt voor het starten van de workflow:
repo:< Organization/Repository >:ref:< ref path>
. Bijvoorbeeldrepo:n-username/ node_express:ref:refs/heads/my-branch
ofrepo:n-username/ node_express:ref:refs/tags/my-tag
. - Voor werkstromen die worden geactiveerd door een pull-aanvraaggebeurtenis:
repo:< Organization/Repository >:pull-request
.
- Voor taken die zijn gekoppeld aan een omgeving:
- Naam is de naam van de federatieve referentie, die later niet kan worden gewijzigd.
-
Doelgroep vermeldt de doelgroepen die in het externe token kunnen voorkomen. Dit veld is verplicht. De aanbevolen waarde is
api://AzureADTokenExchange
.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://token.actions.githubusercontent.com/' -Name 'GitHub-Actions-Test' -Subject 'repo:octo-org/octo-repo:environment:Production'
Voorbeeld van Kubernetes
- ApplicationObjectId: de object-id van de app (niet de toepassings-id (client) die u eerder hebt geregistreerd in Microsoft Entra ID.
- Issuer is de URL van de verlener van uw serviceaccount (de URL van de OIDC-verlener voor het beheerde cluster of de URL van de OIDC-verlener voor een zelfbeheerd cluster).
-
Onderwerp is de onderwerpnaam in de tokens die zijn uitgegeven aan het serviceaccount. Kubernetes gebruikt de volgende indeling voor onderwerpnamen:
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - Naam is de naam van de federatieve referentie, die later niet kan worden gewijzigd.
-
Doelgroep vermeldt de doelgroepen die kunnen voorkomen in de
aud
claim van het externe token.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/' -Name 'Kubernetes-federated-credential' -Subject 'system:serviceaccount:erp8asle:pod-identity-sa'
Voorbeeld van andere id-providers
Geef de volgende parameters op (met behulp van een softwareworkload die wordt uitgevoerd in Google Cloud als voorbeeld):
- ObjectID: de object-id van de app (niet de toepassings-id (client) die u eerder hebt geregistreerd in Microsoft Entra-id.
- Naam is de naam van de federatieve referentie, die later niet kan worden gewijzigd.
-
Onderwerp: moet overeenkomen met de
sub
claim in het token dat is uitgegeven door de externe id-provider. In dit voorbeeld met Google Cloud is het onderwerp de Unieke ID van het serviceaccount dat u van plan bent te gebruiken. -
Issuer: moet overeenkomen met de
iss
claim in het token dat is uitgegeven door de externe id-provider. Een URL die voldoet aan de OIDC Discovery-specificatie. Microsoft Entra-id gebruikt deze verlener-URL om de sleutels op te halen die nodig zijn om het token te valideren. Voor Google Cloud is de verlenerhttps://accounts.google.com
. -
Doelgroepen: moet overeenkomen met de
aud
claim in het externe token. Om veiligheidsredenen moet u een waarde kiezen die uniek is voor tokens die zijn bedoeld voor Microsoft Entra-id. De aanbevolen waarde is 'api://AzureADTokenExchange'.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'
Federatieve identiteitsreferenties weergeven in een app
Voer de cmdlet Get-AzADAppFederatedCredential uit om de federatieve identiteitsreferenties voor een toepassing weer te geven.
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
Een federatieve identiteitsreferentie ophalen in een app
Voer de cmdlet Get-AzADAppFederatedCredential uit om de federatieve identiteitsreferentie op basis van id op te halen uit een toepassing.
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Een federatieve identiteitsreferentie uit een app verwijderen
Voer de cmdlet Remove-AzADAppFederatedCredential uit om een federatieve identiteitsreferentie uit een toepassing te verwijderen.
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Voorwaarden
Een app-registratie maken in Microsoft Entra ID. Verdeel uw app toegang tot de Azure-resources waarop uw externe softwareworkload betrekking heeft.
Zoek de object-id van de app (niet de toepassings-id (client) die u nodig hebt in de volgende stappen. U vindt de object-id van de app in het Microsoft Entra-beheercentrum. Ga naar de lijst met geregistreerde toepassingen en selecteer uw app-registratie. Zoek in Overzicht->Essentialsde Object-ID.
Haal de onderwerpinformatie en de uitgeverinformatie op voor uw externe IdP en softwareworkload, die u nodig heeft in de volgende stappen.
Het Microsoft Graph-eindpunt (https://graph.microsoft.com
) maakt REST API's beschikbaar om federatedIdentityCredentials te maken, bij te werken, te verwijderen voor toepassingen. Start Azure Cloud Shell en meld u aan bij uw tenant om Microsoft Graph-opdrachten uit te voeren vanuit AZ CLI.
Een federatieve identiteitsreferentie configureren in een app
GitHub Actions
Voer de volgende methode uit om een nieuwe federatieve identiteitsreferentie te maken op uw app (opgegeven door de object-id van de app). De issuer
identificeert GitHub als de externe tokenverlener.
subject
identificeert de GitHub-organisatie, opslagplaats en omgeving voor uw GitHub Actions-werkstroom. Wanneer de GitHub Actions-werkstroom Microsoft Identity Platform aanvraagt om een GitHub-token in te wisselen voor een toegangstoken, worden de waarden in de federatieve identiteitsreferentie gecontroleerd op basis van het opgegeven GitHub-token.
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Testing","issuer":"https://token.actions.githubusercontent.com","subject":"repo:octo-org/octo-repo:environment:Production","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
En u krijgt het antwoord:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
In het fragment zijn de parameters als volgt:
-
name
: de naam van uw Azure-toepassing. -
issuer
: het pad naar de GitHub OIDC-provider:https://token.actions.githubusercontent.com
. Deze verlener wordt vertrouwd door uw Azure-toepassing. -
subject
: Voordat Azure een toegangstoken verleent, moet de aanvraag voldoen aan de hier gedefinieerde voorwaarden.- Voor taken die zijn gekoppeld aan een omgeving:
repo:< Organization/Repository >:environment:< Name >
- Voor taken die niet aan een omgeving zijn gekoppeld, neemt u het referentiepad voor de vertakking/tag op, gebaseerd op het referentiepad dat wordt gebruikt voor het activeren van de werkstroom:
repo:< Organization/Repository >:ref:< ref path>
. Bijvoorbeeldrepo:n-username/ node_express:ref:refs/heads/my-branch
ofrepo:n-username/ node_express:ref:refs/tags/my-tag
. - Voor werkstromen die worden geactiveerd door een pull-aanvraaggebeurtenis:
repo:< Organization/Repository >:pull-request
.
- Voor taken die zijn gekoppeld aan een omgeving:
-
audiences
geeft een lijst weer van de doelgroepen die in het externe token kunnen worden weergegeven. Dit veld is verplicht. De aanbevolen waarde is 'api://AzureADTokenExchange'.
Voorbeeld van Kubernetes
Voer de volgende methode uit om een federatieve identiteitsreferentie in een app te configureren en een vertrouwensrelatie met een Kubernetes-serviceaccount te maken. Geef de volgende parameters op:
-
issuer
is de URL van de verlener van uw serviceaccount (de URL van de OIDC-uitgever voor het beheerde cluster of de OIDC Issuer URL voor een zelfbeheerd cluster). -
subject
is de onderwerpnaam in de tokens die zijn uitgegeven aan het serviceaccount. Kubernetes gebruikt de volgende indeling voor onderwerpnamen:system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. -
name
is de naam van de federatieve referentie, die later niet kan worden gewijzigd. -
audiences
geeft een lijst weer van de doelgroepen die in het externe token kunnen worden weergegeven. Dit veld is verplicht. De aanbevolen waarde is 'api://AzureADTokenExchange'.
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/","subject":"system:serviceaccount:erp8asle:pod-identity-sa","description":"Kubernetes service account federated credential","audiences":["api://AzureADTokenExchange"]}'
En u krijgt het antwoord:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Kubernetes service account federated credential",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"name": "Kubernetes-federated-credential",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa"
}
Voorbeeld van andere id-providers
Voer de volgende methode uit om een federatieve identiteitsreferentie voor een app te configureren en een vertrouwensrelatie met een externe id-provider te maken. Geef de volgende parameters op (met behulp van een softwareworkload die wordt uitgevoerd in Google Cloud als voorbeeld):
- naam is de naam van de federatieve referentie, die later niet gewijzigd kan worden.
- ObjectID: de object-id van de app (niet de toepassings-id (client) die u eerder hebt geregistreerd in Microsoft Entra-id.
-
onderwerp: moet overeenkomen met de
sub
claim in het token dat is uitgegeven door de externe id-provider. In dit voorbeeld met Google Cloud is subject de Unieke ID van het serviceaccount dat u wilt gebruiken. -
verstrekker: moet overeenkomen met de
iss
claim in het token dat is uitgegeven door de externe identiteitsaanbieder. Een URL die voldoet aan de OIDC Discovery-specificatie. Microsoft Entra-id gebruikt deze verlener-URL om de sleutels op te halen die nodig zijn om het token te valideren. Voor Google Cloud is de verlener "https://accounts.google.com". - doelgroepen somt de doelgroepen op die in het externe token kunnen voorkomen. Dit veld is verplicht. De aanbevolen waarde is 'api://AzureADTokenExchange'.
az rest --method POST --uri 'https://graph.microsoft.com/applications/<ObjectID>/federatedIdentityCredentials' --body '{"name":"GcpFederation","issuer":"https://accounts.google.com","subject":"112633961854638529490","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
En u krijgt het antwoord:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://accounts.google.com"",
"name": "GcpFederation",
"subject": "112633961854638529490"
}
Federatieve identiteitsreferenties weergeven in een app
Voer de volgende methode uit om de federatieve identiteitsreferenties weer te geven voor een app (opgegeven door de object-id van de app):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'
En u krijgt een antwoord dat vergelijkbaar is met:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": [
{
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
]
}
Een federatieve identiteitsreferentie ophalen in een app
Voer de volgende methode uit om een federatieve identiteitsreferentie op te halen voor een app (opgegeven door de object-id van de app):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
En u krijgt een antwoord dat vergelijkbaar is met:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": {
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials('00001111-aaaa-2222-bbbb-3333cccc4444')/00001111-aaaa-2222-bbbb-3333cccc4444",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
}
Een federatieve identiteitsreferentie uit een app verwijderen
Voer de volgende methode uit om een federatieve identiteitsreferentie te verwijderen uit een app (opgegeven door de object-id van de app):
az rest -m DELETE -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Zie ook
- Zie Microsoft Entra-workload-id voor Kubernetes opensource-project voor meer informatie over het gebruik van workloadidentiteitsfederatie voor Kubernetes.
- Zie hoe u een werkstroom voor GitHub Actions configureert om een toegangstoken op te halenen meer te leren over het gebruik van workloadidentiteitsfederatie voor GitHub Actions.
- Lees de documentatie van GitHub Actions voor meer informatie over het configureren van uw GitHub Actions-werkstroom om een toegangstoken op te halen van de Microsoft-id-provider en toegang te krijgen tot Azure-resources.
- Lees voor meer informatie hoe Microsoft Entra ID gebruikmaakt van de OAuth 2.0-clientreferenties en een clientverklaring die is uitgegeven door een andere IdP om een token op te halen.
- Voor informatie over de vereiste indeling van JWT's die zijn gemaakt door externe id-providers, leest u over de -assertie-indeling.