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. De federatieve identiteitsreferenties brengen een vertrouwensrelatie tot stand tussen een toepassing en een externe id-provider (IdP).
Vervolgens kunt u een workload voor externe software configureren om een token van de externe id-provider uit te wisselen voor een toegangstoken van 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 workload-identiteitsfederatie voor meer informatie over de werkstroom voor het uitwisselen van tokens.
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 Application Beheer istrator, Application Developer, Cloud Application Beheer istrator of Toepassingseigenaar hebben. De machtiging microsoft.directory/applications/credentials/update 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:
verlener en onderwerp zijn de belangrijkste gegevens die nodig zijn om de vertrouwensrelatie in te stellen. De combinatie van
issuer
ensubject
moet uniek zijn in de app. Wanneer de workload van de externe software Microsoft Identity Platform vraagt om het externe token voor een toegangstoken uit te wisselen, worden de waarden verlener en onderwerp van de federatieve identiteitsreferentie gecontroleerd op basis van de claimsissuer
ensubject
in het externe token. Als deze validatiecontrole is geslaagd, geeft Microsoft Identity Platform een toegangstoken uit voor de externe softwareworkload.verlener is de URL van de externe id-provider. Deze waarde moet overeenkomen met de claim
issuer
van de verlener van het externe token dat wordt uitgewisseld. Vereist. Als de claimissuer
voorloop- of volgspaties in de waarde heeft, wordt de tokenuitwisseling geblokkeerd. Dit veld heeft een tekenlimiet van 600 tekens.onderwerp is de id van de externe softwareworkload. Deze waarde moet overeenkomen met de claim
sub
(subject
) van het externe token dat wordt uitgewisseld. onderwerp heeft geen vaste indeling, omdat elke id-provider een eigen onderwerp gebruikt - soms een GUID, soms een door dubbele punt gescheiden id's, soms willekeurige tekenreeksen. Dit veld heeft een tekenlimiet van 600 tekens.Belangrijk
De waarden van de instelling onderwerp moeten exact overeenkomen met de configuratie van de GitHub-werkstroom. Anders kijkt Microsoft Identity Platform naar het binnenkomende externe token en wordt de uitwisseling voor een toegangstoken geweigerd. Er wordt geen fout weergegeven. De uitwisseling mislukt zonder fout.
Belangrijk
Als u per ongeluk de onjuiste externe workloadgegevens toevoegt in de instelling onderwerp, wordt de federatieve identiteitsreferentie gemaakt. De fout wordt pas zichtbaar wanneer de tokenuitwisseling mislukt.
Bij doelgroepen vindt u een lijst met de doelgroepen die kunnen worden weergegeven in de externe token. Vereist. U moet één doelgroepwaarde toevoegen, met een limiet van 600 tekens. De aanbevolen waarde is 'api://AzureADTokenExchange'. In de claim
aud
in het binnenkomende token staat wat Microsoft Identity Platform moet accepteren.naam is de unieke id 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 opgegeven beschrijving van de federatieve identiteitsreferentie. Optioneel. 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 identiteitsreferenties voor meer informatie over ondersteunde regio's, tijd voor het doorgeven van federatieve referentie-updates, ondersteunde verleners en meer.
Vereisten
Maak een app-registratie in Microsoft Entra-id. Verleen uw app toegang tot de Azure-resources waar uw externe softwareworkload op is gericht.
Zoek de object-id van de app (niet de toepassings-id (client-id)); deze hebt u in de volgende stappen nodig. 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. Zoek in Overzicht->Essentials de Object-id.
Haal de informatie over het onderwerp en de verlener op voor uw externe IdP- en softwareworkload, die u nodig hebt in de volgende stappen.
Een federatieve identiteitsreferentie in een app configureren
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 en geheimen in het linkernavigatievenster, selecteer het tabblad Federatieve referenties en selecteer Referentie toevoegen.
Selecteer in de vervolgkeuzelijst Federatief referentiescenario de optie GitHub-acties die Azure-resources implementeren.
Geef de Organisatie en Opslagplaats voor uw GitHub Actions-werkstroom op.
Selecteer als Entiteitstype de optie Omgeving, Vertakking, Pull-aanvraag of Tag en geef de waarde op. De waarden moeten exact overeenkomen met de configuratie in de GitHub-werkstroom. Patroonkoppeling wordt niet ondersteund voor vertakkingen en tags. Geef een omgeving op als uw on-push-werkstroom wordt uitgevoerd op veel vertakkingen of tags. Lees de voorbeelden voor meer informatie.
Voeg een naam toe voor de federatieve referentie.
De velden Verlener, Doelgroepen en 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 toepassings-id (client)AZURE_TENANT_ID
de map-id (tenant)In de volgende schermopname ziet u hoe u de toepassings-id en tenant-id kopieert.
AZURE_SUBSCRIPTION_ID
uw abonnements-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 hoofdaftakking:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Geef als EntiteitstypeVertakking op en geef 'main' op als naam GitHub-vertakking.
Voorbeeld van een 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 als EntiteitstypeOmgeving en 'production' als GitHub-omgevingsnaam op.
Voorbeeld van een 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 als Entiteitstypetag op en geef als GitHub-tagnaam 'v2' op.
Voorbeeld van pull-aanvraag
Geef een Entiteitstype van een pull-aanvraag op voor een werkstroom die wordt geactiveerd door een pull-aanvraaggebeurtenis
Kubernetes
Zoek uw app-registratie in de ervaring voor app-registraties van het Microsoft Entra-beheercentrum. Selecteer Certificaten en geheimen in het linkernavigatievenster, selecteer het tabblad Federatieve referenties en selecteer Referentie toevoegen.
Selecteer het scenario Kubernetes voor toegang tot Azure-resources in de vervolgkeuzelijst.
Vul de velden URL van clusterverlener, Naamruimte, Serviceaccountnaam en Naam in:
- URL van clusterverlener is de URL van de OIDC-verlener voor het beheerde cluster of de URL van de OIDC-verlener voor een zelfbeheerd cluster.
- Naam serviceaccount 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. U kunt deze naam later niet wijzigen.
Andere id-providers
Zoek uw app-registratie in de ervaring voor app-registraties van het Microsoft Entra-beheercentrum. Selecteer Certificaten en geheimen in het linkernavigatievenster, selecteer het tabblad Federatieve referenties en selecteer Referentie toevoegen.
Selecteer het scenario Andere verlener 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. U kunt deze naam later niet wijzigen.
- Onderwerp-id: moet overeenkomen met de claim
sub
in het token dat is uitgegeven door de externe id-provider. In dit voorbeeld met Google Cloud is onderwerp de unieke id van het serviceaccount dat u wilt gebruiken. - Verlener: moet overeenkomen met de claim
iss
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. De verlener voor Google Cloud is "https://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 en 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 en 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.
Vereisten
- Als u nog geen Azure-account hebt, registreer u dan voor een gratis account voordat u verdergaat.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- Maak een app-registratie in Microsoft Entra-id. Verleen uw app toegang tot de Azure-resources waar uw externe softwareworkload op is gericht.
- Zoek de object-id, app-id (client-id) of id-URI van de app. Deze gegevens hebt u nodig 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->Essentials de waarde Object-id, de toepassings-id (client-id) of de toepassings-id-URI op. Deze hebt u nodig in de volgende stappen.
- Haal de informatie over het onderwerp en de verlener op voor uw externe IdP- en softwareworkload, die u nodig hebt in de volgende stappen.
Een federatieve identiteitsreferentie in een app configureren
Voer de opdracht az ad app federated-credential create uit om een nieuwe federatieve identiteitsreferentie te maken in uw app.
De id
parameter geeft de id-URI, toepassings-id of object-id van de toepassing op. Met parameters
de parameter worden de parameters opgegeven, in JSON-indeling, voor het maken van de federatieve identiteitsreferentie.
Voorbeeld van GitHub Actions
De naam geeft de naam aan van uw federatieve identiteitsreferentie.
De verlener identificeert het pad naar de GitHub OIDC-provider: https://token.actions.githubusercontent.com/
. Deze verlener wordt vertrouwd door uw Azure-toepassing.
onderwerp identificeert de GitHub-organisatie, opslagplaats en omgeving voor uw GitHub Actions-werkstroom. Wanneer de GitHub Actions-werkstroom aan Microsoft Identity Platform vraagt om een GitHub-token om 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 taken die niet zijn gekoppeld aan een omgeving, moet u het referentiepad voor vertakkingen/tags opnemen op basis van 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 door een pull-aanvraaggebeurtenis zijn geactiveerd:
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"
]
}
Kubernetes-voorbeeld
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).
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. U kunt deze naam later niet wijzigen.
Bij doelgroepen vindt u een lijst met de doelgroepen die kunnen worden weergegeven in de externe token. Dit is een verplicht veld. 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 met andere externe id-providers maken. In het volgende voorbeeld wordt een softwareworkload gebruikt die in Google Cloud wordt uitgevoerd:
naam is de naam van de federatieve referentie. U kunt deze naam later niet wijzigen.
id: de object-id, toepassings-id (client-id) of id-URI van de app.
onderwerp: moet overeenkomen met de claim sub
in het token dat is uitgegeven door de externe id-provider. In dit voorbeeld met Google Cloud is onderwerp de unieke id van het serviceaccount dat u wilt gebruiken.
verlener: moet overeenkomen met de claim iss
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. De verlener voor Google Cloud is "https://accounts.google.com".
doelgroepen: hier vindt u een lijst met de doelgroepen die kunnen worden weergegeven in de externe token. Dit is een verplicht veld. 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 opdracht az ad app federated-credential list uit om de federatieve identiteitsreferenties in uw app weer te geven.
De id-parameter 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 in een app krijgen
Voer de opdracht az ad app federated-credential show uit om een nieuwe federatieve identiteitsreferentie op te halen in uw app.
De id-parameter geeft de id-URI, toepassings-id of object-id van de toepassing op.
Met de federatieve-referentie-id wordt de id of naam van de federatieve identiteitsreferentie opgegeven.
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 id-parameter geeft de id-URI, toepassings-id of object-id van de toepassing op.
Met de federatieve-referentie-id wordt de id of naam van de federatieve identiteitsreferentie opgegeven.
az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Vereisten
- Als u de voorbeeldscripts wilt uitvoeren, hebt u twee opties:
- Gebruik Azure Cloud Shell, die u kunt openen met behulp van de knop Probeer het nu in de rechterbovenhoek van codeblokken.
- Voer scripts lokaal uit met Azure PowerShell, zoals wordt beschreven in de volgende sectie.
- Maak een app-registratie in Microsoft Entra-id. Verleen uw app toegang tot de Azure-resources waar uw externe softwareworkload op is gericht.
- Zoek de object-id van de app (niet de toepassings-id (client-id)); deze hebt u in de volgende stappen nodig. 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->Essentials de Object-id.
- Haal de informatie over het onderwerp en de verlener op voor uw externe IdP- en softwareworkload, die u nodig hebt 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 meest recente 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
Exit
uit de huidige PowerShell-sessie nadat u deze opdracht voor de volgende stap hebt uitgevoerd.Installeer de voorlopige versie van de
Az.Resources
-module om de federatieve identiteitsbewerkingen in dit artikel uit te voeren.Install-Module -Name Az.Resources -AllowPrerelease
Een federatieve identiteitsreferentie in een app configureren
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.
- Verlener identificeert GitHub als de verlener van externe tokens.
- Onderwerp identificeert de GitHub-organisatie, opslagplaats en omgeving voor uw GitHub Actions-werkstroom. Wanneer de GitHub Actions-werkstroom aan Microsoft Identity Platform vraagt om een GitHub-token om 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 zijn gekoppeld aan een omgeving, moet u het referentiepad voor vertakkingen/tags opnemen op basis van 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 door een pull-aanvraaggebeurtenis zijn geactiveerd:
repo:< Organization/Repository >:pull-request
.
- Voor taken die zijn gekoppeld aan een omgeving:
- Naam is de naam van de federatieve referentie. U kunt deze naam later niet wijzigen.
- Bij Doelgroep vindt u een lijst met de doelgroepen die kunnen worden weergegeven in de externe token. Dit is een verplicht veld. 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'
Kubernetes-voorbeeld
- ApplicationObjectId: de object-id van de app (niet de toepassings-id (client) die u eerder hebt geregistreerd in Microsoft Entra-id.
- 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).
- 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. U kunt deze naam later niet wijzigen.
- Bij Doelgroep vindt u een lijst met de doelgroepen die kunnen worden weergegeven in de claim
aud
van de 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. U kunt deze naam later niet wijzigen.
- Onderwerp: moet overeenkomen met de claim
sub
in het token dat is uitgegeven door de externe id-provider. In dit voorbeeld met Google Cloud is onderwerp de unieke id van het serviceaccount dat u wilt gebruiken. - Verlener: moet overeenkomen met de claim
iss
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. De verlener voor Google Cloud is "https://accounts.google.com". - Doelgroepen: moeten overeenkomen met de claim
aud
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 in een app krijgen
Voer de cmdlet Get-AzADAppFederatedCredential uit om de federatieve identiteitsreferenties voor een toepassing weer te geven op id.
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Een federatieve identiteitsreferentie uit een app verwijderen
Voer de cmdlet Remove-AzADAppFederatedCredential uit om de federatieve identiteitsreferenties uit een toepassing te verwijderen.
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Vereisten
Maak een app-registratie in Microsoft Entra-id. Verleen uw app toegang tot de Azure-resources waar uw externe softwareworkload op is gericht.
Zoek de object-id van de app (niet de toepassings-id (client-id)); deze hebt u in de volgende stappen nodig. 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->Essentials de Object-id.
Haal de informatie over het onderwerp en de verlener op voor uw externe IdP- en softwareworkload, die u nodig hebt in de volgende stappen.
Het Microsoft Graph-eindpunt (https://graph.microsoft.com
) maakt REST API's beschikbaar voor het maken, bijwerken en verwijderen van federatedIdentityCredentials voor toepassingen. Open Azure Cloud Shell en meld u aan bij uw tenant om Microsoft Graph-opdrachten uit te voeren vanuit AZ CLI.
Een federatieve identiteitsreferentie in een app configureren
GitHub Actions
Voer de volgende methode uit om een nieuwe federatieve identiteitsreferentie te maken in uw app (opgegeven door de object-id van de app). De verlener identificeert GitHub als de verlener van externe tokens. onderwerp identificeert de GitHub-organisatie, opslagplaats en omgeving voor uw GitHub Actions-werkstroom. Wanneer de GitHub Actions-werkstroom aan Microsoft Identity Platform vraagt om een GitHub-token om 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"
}
naam: de naam van uw Azure-toepassing.
verlener: het pad naar de GitHub OIDC-provider: https://token.actions.githubusercontent.com
. Deze verlener wordt vertrouwd door uw Azure-toepassing.
onderwerp: 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 taken die niet zijn gekoppeld aan een omgeving, moet u het referentiepad voor vertakkingen/tags opnemen op basis van 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 door een pull-aanvraaggebeurtenis zijn geactiveerd:
repo:< Organization/Repository >:pull-request
.
Bij doelgroepen vindt u een lijst met de doelgroepen die kunnen worden weergegeven in de externe token. Dit is een verplicht veld. De aanbevolen waarde is 'api://AzureADTokenExchange'.
Kubernetes-voorbeeld
Voer de volgende methode uit om een federatieve identiteitsreferentie voor een app te configureren en een vertrouwensrelatie met een Kubernetes-serviceaccount tot stand te brengen. Geef de volgende parameters op:
- 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).
- 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. U kunt deze naam later niet wijzigen.
- Bij doelgroepen vindt u een lijst met de doelgroepen die kunnen worden weergegeven in de externe token. Dit is een verplicht veld. 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 tot stand te brengen. 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. U kunt deze naam later niet wijzigen.
- 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 claim
sub
in het token dat is uitgegeven door de externe id-provider. In dit voorbeeld met Google Cloud is onderwerp de unieke id van het serviceaccount dat u wilt gebruiken. - verlener: moet overeenkomen met de claim
iss
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. De verlener voor Google Cloud is "https://accounts.google.com". - Bij doelgroepen vindt u een lijst met de doelgroepen die kunnen worden weergegeven in de externe token. Dit is een verplicht veld. 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'
U krijgt ongeveer de volgende reactie:
{
"@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 in een app krijgen
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'
U krijgt ongeveer de volgende reactie:
{
"@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'
Volgende stappen
- Zie Microsoft Entra Workload-ID voor het opensource-project van Kubernetes voor meer informatie over het gebruik van workloadidentiteitsfederatie voor Kubernetes.
- Zie Een GitHub Actions-werkstroom configureren om een toegangstoken op te halen voor meer informatie over het gebruik van workloadidentiteitsfederatie voor GitHub Actions.
- Lees de GitHub Actions-documentatie voor meer informatie over het configureren van uw GitHub Actions-werkstroom om een toegangstoken te verkrijgen van de Microsoft-id-provider en toegang te krijgen tot Azure-resources.
- Lees voor meer informatie over hoe Microsoft Entra ID de OAuth 2.0-clientreferenties verleent en een clientverklaring die is uitgegeven door een andere IdP om een token op te halen.
- Lees over de assertie-indeling voor informatie over de vereiste indeling van JWT's die zijn gemaakt door externe id-providers.