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 en subject 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 claims issuer en subject 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 claim issuer 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:

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

  2. Selecteer in de vervolgkeuzelijst Federatief referentiescenario de optie GitHub-acties die Azure-resources implementeren.

  3. Geef de Organisatie en Opslagplaats voor uw GitHub Actions-werkstroom op.

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

  5. Voeg een naam toe voor de federatieve referentie.

  6. De velden Verlener, Doelgroepen en Onderwerp-id worden automatisch ingevuld op basis van de waarden die u hebt ingevoerd.

  7. Selecteer Toevoegen om de federatieve referentie te configureren.

    Screenshot of the Add a credential window, showing sample values.

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.

    Screenshot that demonstrates how to copy the application ID and tenant ID from Microsoft Entra admin center.

  • 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

  • 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>. Bijvoorbeeld repo:n-username/ node_express:ref:refs/heads/my-branch of repo: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 f6475511-fd81-4965-a00e-41e7792b7b9c --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 f6475511-fd81-4965-a00e-41e7792b7b9c --parameters credential.json
("credential.json" contains the following content)
{
    "name": "Kubernetes-federated-credential",
    "issuer": "https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/",
    "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 f6475511-fd81-4965-a00e-41e7792b7b9c --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 f6475511-fd81-4965-a00e-41e7792b7b9c

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 f6475511-fd81-4965-a00e-41e7792b7b9c --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 f6475511-fd81-4965-a00e-41e7792b7b9c --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:

  1. Installeer de meest recente versie van Azure PowerShell als u dat nog niet hebt gedaan.

  2. Meld u aan bij Azure.

    Connect-AzAccount
    
  3. 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.

  4. 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>. Bijvoorbeeld repo:n-username/ node_express:ref:refs/heads/my-branch of repo:n-username/ node_express:ref:refs/tags/my-tag.
    • Voor werkstromen die door een pull-aanvraaggebeurtenis zijn geactiveerd: repo:< Organization/Repository >:pull-request.
  • 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/9d80a3e1-2a87-46ea-ab16-e629589c541c/' -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/f6475511-fd81-4965-a00e-41e7792b7b9c/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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Testing",
  "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
  "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>. Bijvoorbeeld repo:n-username/ node_express:ref:refs/heads/my-branch of repo: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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/","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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Kubernetes service account federated credential",
  "id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
  "issuer": "https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/",
  "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('f6475511-fd81-4965-a00e-41e7792b7b9c')/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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials'

U krijgt ongeveer de volgende reactie:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials",
  "value": [
    {
      "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
      "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/f6475511-fd81-4965-a00e-41e7792b7b9c//federatedIdentityCredentials/1aa3e6a7-464c-4cd2-88d3-90db98132755'

U krijgt ongeveer de volgende reactie:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials",
  "value": {
      "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
      "@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials('f6475511-fd81-4965-a00e-41e7792b7b9c')/f6475511-fd81-4965-a00e-41e7792b7b9c",
    "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
      "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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials/1aa3e6a7-464c-4cd2-88d3-90db98132755'

Volgende stappen