Konfigurera en app för att lita på en extern identitetsprovider
I den här artikeln beskrivs hur du hanterar federerade identitetsautentiseringsuppgifter i ett program i Microsoft Entra-ID. Den federerade identitetsautentiseringsuppgiften skapar en förtroenderelation mellan ett program och en extern identitetsprovider (IdP).
Du kan sedan konfigurera en extern programvaruarbetsbelastning för att byta ut en token från den externa IdP:en mot en åtkomsttoken från Microsofts identitetsplattform. Den externa arbetsbelastningen kan komma åt Microsoft Entra-skyddade resurser utan att behöva hantera hemligheter (i scenarier som stöds). Mer information om arbetsflödet för tokenutbyte finns i arbetsbelastningsidentitetsfederation.
I den här artikeln får du lära dig hur du skapar, listar och tar bort federerade identitetsautentiseringsuppgifter för ett program i Microsoft Entra-ID.
Viktiga överväganden och begränsningar
Om du vill skapa, uppdatera eller ta bort en federerad identitetsautentiseringsuppgift måste kontot som utför åtgärden ha rollen Programadministratör, Programutvecklare, Molnprogramadministratöreller Programägare. Behörigheten microsoft.directory/applications/credentials/update krävs för att uppdatera en federerad identitetsautentiseringsuppgift.
Högst 20 federerade identitetsuppgifter kan läggas till i ett program eller en användartilldelad hanterad identitet.
När du konfigurerar en federerad identitetsautentiseringsuppgift finns det flera viktiga uppgifter att tillhandahålla:
utfärdare och ämne är nyckeluppgifter som behövs för att upprätta förtroenderelationen. Kombinationen av
issuer
ochsubject
måste vara unik för appen. När den externa programvaruarbetsbelastningen begär att Microsofts identitetsplattform byter ut den externa token mot en åtkomsttoken kontrolleras utfärdare och ämne värden för den federerade identitetsautentiseringsuppgiften motissuer
ochsubject
anspråk som anges i den externa token. Om verifieringskontrollen godkänns utfärdar Microsofts identitetsplattform en åtkomsttoken till den externa programvaruarbetsbelastningen.utfärdare är URL:en för den externa identitetsprovidern och måste matcha det
issuer
anspråket för den externa token som utbyts. Krävs. Om anspråketissuer
har inledande eller avslutande blanksteg i värdet blockeras tokenväxlingen. Det här fältet har en teckengräns på 600 tecken.ämne är identifieraren för den externa programvaruarbetsbelastningen och måste matcha
sub
(subject
) anspråket för den externa token som utbyts. ämne har inget fast format, eftersom varje IdP använder sitt eget – ibland ett GUID, ibland en kolonavgränsad identifierare, ibland godtyckliga strängar. Det här fältet har en teckengräns på 600 tecken.Viktig
ämne inställningsvärden måste exakt matcha konfigurationen i GitHub-arbetsflödeskonfigurationen. Annars tittar Microsofts identitetsplattform på den inkommande externa token och avvisar utbytet för en åtkomsttoken. Du får inget fel. Utbytet misslyckas utan fel.
Viktig
Om du av misstag lägger till felaktig extern arbetsbelastningsinformation i ämne att ange federerade identitetsautentiseringsuppgifter har skapats utan fel. Felet blir inte uppenbart förrän tokenutbytet misslyckas.
målgrupper visar en lista över målgrupper som kan visas i den externa token. Krävs. Du måste lägga till ett enstaka målgruppsvärde som har en gräns på 600 tecken. Det rekommenderade värdet är "api://AzureADTokenExchange". Det står vad Microsofts identitetsplattform måste acceptera i det där
aud
-anspråket i den inkommande tokenen.namn är den unika identifieraren för den federerade identitetsautentiseringsuppgiften. Krävs. Det här fältet har en teckengräns på 3–120 tecken och måste vara URL-vänligt. Alfanumeriska tecken, bindestreck eller understreck stöds. Det första tecknet får endast vara alfanumeriskt. Den är oföränderlig när den har skapats.
beskrivning är den användardefinierade beskrivningen av den federerade identitetsautentiseringsuppgiften. Valfri. Beskrivningen verifieras inte eller kontrolleras inte av Microsoft Entra-ID. Det här fältet har en gräns på 600 tecken.
Jokertecken stöds inte i något federerat egenskapsvärde för identitetsautentiseringsuppgifter.
Mer information om regioner som stöds, tid för att sprida federerade uppdateringar av autentiseringsuppgifter, utfärdare som stöds med mera finns i Viktiga överväganden och begränsningar för federerade identitetsautentiseringsuppgifter.
Förutsättningar
- Skapa en appregistrering eller hanterad identitet i Microsoft Entra ID. Ge din app åtkomst till de Azure-resurser som din externa programvaruarbetsbelastning riktar in sig på.
- Hitta objekt-ID:t för appen (inte programmets (klient)-ID:t), som du behöver i följande steg. Du hittar objekt-ID:t för appen i Administrationscenter för Microsoft Entra. Gå till listan över appregistreringar och välj din appregistrering. I Översikthittar du objekt-ID:t.
- Hämta information om subjekt och utfärdare för din externa IdP och programvaruarbete, vilken du behöver i de följande stegen.
Konfigurera en federerad identitetsautentiseringsuppgift i en app
GitHub Actions
Följ dessa steg för att lägga till en federerad identitet för GitHub-åtgärder:
Hitta din appregistrering i appregistreringsupplevelsen i Administrationscenter för Microsoft Entra. Välj Certifikat & hemligheter i det vänstra navigeringsfönstret, välj fliken Federerade autentiseringsuppgifter och välj Lägg till autentiseringsuppgifter.
I listrutan för scenariot med federerade autentiseringsuppgifter ska du välja GitHub-åtgärder som distribuerar Azure-resurser.
Ange organisation och lagringsplats för ditt GitHub Actions-arbetsflöde.
För Entitetstypväljer du Environment, Branch, Pull requesteller Tag och anger värdet. Värdena måste exakt matcha konfigurationen i GitHub-arbetsflödet. Mönstermatchning stöds inte för grenar och taggar. Ange en miljö om ditt push-arbetsflöde körs mot många grenar eller taggar. För mer information, läs exemplen .
Lägg till en Namn för federerade autentiseringsuppgifter.
Issuer, Audiencesoch Subject identifier fält fylls i automatiskt baserat på de värden du angav.
Välj Lägg till för att konfigurera federerade autentiseringsuppgifter.
Använd följande värden från din Microsoft Entra-programregistrering för ditt GitHub-arbetsflöde:
AZURE_CLIENT_ID
applikations-ID:t (klient)AZURE_TENANT_ID
ID för Directory (klientorganisation)Följande skärmbild visar hur du kopierar program-ID och klientorganisations-ID.
AZURE_SUBSCRIPTION_ID
ditt prenumerations-ID-nummer. Om du vill hämta prenumerations-ID:t öppnar du Prenumerationer i Azure-portalen och letar upp din prenumeration. Kopiera sedan prenumerations-ID:t.
Exempel på entitetstyp
Grenexempel
För ett arbetsflöde som utlöses av en push- eller pull-förfrågan på huvudgrenen:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Ange en entitetstyp för Branch och ett GitHub-grennamn av "main".
Miljöexempel
För Jobb som är knutna till en miljö med namnet "produktion":
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Ange en entitetstyp för Environment och ett GitHub-miljönamn för "produktion".
Taggexempel
Till exempel för ett arbetsflöde som utlöses av en push till taggen med namnet "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.*
Ange en entitetstyp för Tag och ett GitHub-taggnamn av "v2".
Exempel på pull-begäran
För ett arbetsflöde som utlöses av en pull-begärandehändelse anger du en entitetstyp för Pull-begäran
Kubernetes
Hitta din appregistrering i appregistreringsupplevelsen i Administrationscenter för Microsoft Entra. Välj Certifikat & hemligheter i det vänstra navigeringsfönstret, välj fliken Federerade autentiseringsuppgifter och välj Lägg till autentiseringsuppgifter.
Välj scenariot Kubernetes som har åtkomst till Azure-resurser i listrutan.
Fyll i klusterutfärdare-URL, namnområde, tjänstkontonamnoch namn fälten:
- URL för klusterutfärdare är URL för OIDC-utfärdare för det hanterade klustret eller URL för OIDC-utfärdare för ett självförvaltande kluster.
- Tjänstkontonamn är namnet på Kubernetes-tjänstkontot, som tillhandahåller en identitet för processer som körs i en podd.
- Namnområde är namnområdet för tjänstkontot.
- Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
Andra identitetsprovidrar
Hitta din appregistrering i appregistreringsupplevelsen i Administrationscenter för Microsoft Entra. Välj Certifikat & hemligheter i det vänstra navigeringsfönstret, välj fliken Federerade autentiseringsuppgifter och välj Lägg till autentiseringsuppgifter.
Välj scenariot Annan utfärdare i rullgardinsmenyn.
Ange följande fält (med en programvaruarbetsbelastning som körs i Google Cloud som exempel):
- Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
-
Ämnesidentifierare: måste matcha det
sub
påståendet i token som utfärdades av den externa identitetsleverantören. I det här exemplet med Google Cloud är ämne unikt ID för det tjänstkonto som du planerar att använda. -
Issuer: måste överensstämma med det
iss
anspråket i tecknet som utfärdats av den externa identitetsleverantören. En URL som uppfyller OIDC Discovery-specifikationen. Microsoft Entra ID använder den här utfärdarens URL för att hämta de nycklar som krävs för att verifiera token. För Google Cloud är utfärdarenhttps://accounts.google.com
.
Visa en lista över autentiseringsuppgifter för federerad identitet i en app
Hitta din appregistrering i appregistreringsmiljön i administrationscentret för Microsoft Entra. Välj Certifikat & hemligheter i det vänstra navigeringsfönstret och välj fliken Federerade autentiseringsuppgifter. De federerade autentiseringsuppgifter som har konfigurerats i din app visas.
Ta bort en federerad identitetsautentiseringsuppgift från en app
Hitta din appregistrering i appregistreringsupplevelsen i Administrationscenter för Microsoft Entra. Välj Certifikat & hemligheter i det vänstra navigeringsfönstret och välj fliken Federerade autentiseringsuppgifter. De federerade autentiseringsuppgifter som har konfigurerats i din app visas.
Om du vill ta bort en federerad identitetsautentiseringsuppgift väljer du ikonen Ta bort för autentiseringsuppgifterna.
Konfigurera en flexibel federerad identitetsautentiseringsuppgift (förhandsversion)
- Gå till Microsoft Entra-ID och välj det program där du vill konfigurera den federerade identitetsautentiseringsuppgiften.
- I det vänstra navigeringsfönstret väljer du Certifikat & hemligheter.
- Under fliken Federerade autentiseringsuppgifter väljer du + Lägg till autentiseringsuppgifter.
- I fönstret Lägg till en autentiseringsuppgift som visas väljer du Annan utfärdarei listrutan bredvid federerat autentiseringsscenarie.
- I Value ange det anspråksmatchningsuttryck som du vill använda.
Förutsättningar
- Om du inte redan har ett Azure-konto registrera dig för ett kostnadsfritt konto innan du fortsätter.
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installera Azure CLI. Om du kör i Windows eller macOS kan du överväga att köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI-.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI-.
Kör az version för att hitta den version och de beroendebibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- Skapa en appregistrering i Microsoft Entra-ID. Ge din app åtkomst till de Azure-resurser som din externa programvaruarbetsbelastning riktar in sig på.
- Leta upp objekt-ID, app-ID (klient)-ID eller identifierar-URI för appen, som du behöver i följande steg. Du hittar dessa värden i Administrationscenter för Microsoft Entra. Gå till listan över registrerade program och välj din appregistrering. I Översikt–>Essentialshämtar du objekt-ID, program-IDeller program-ID-URI värde som du behöver i följande steg.
- Hämta ämne och utfärdare information för din externa IdP- och programvaruarbetsbelastning, som du behöver i följande steg.
Konfigurera en federerad identitetsautentiseringsuppgift i en app
Kör kommandot az ad app federated-credential create för att skapa en ny federerad identitetsautentiseringsuppgift i din app.
Parametern id
anger identifierar-URI, program-ID eller objekt-ID för programmet. Parametern parameters
anger parametrarna i JSON-format för att skapa den federerade identitetsautentiseringsuppgiften.
GitHub Actions-exempel
Det namnet anger namnet på din federerade identitetsautentiseringsuppgift.
Den utfärdaren identifierar sökvägen till GitHub OIDC-leverantören: https://token.actions.githubusercontent.com/
. Den här utfärdaren blir betrodd av ditt Azure-program.
Det ämnet identifierar GitHub-organisationen, lagringsplatsen och miljön för ditt GitHub Actions-arbetsflöde. När GitHub Actions-arbetsflödet begär att Microsofts identitetsplattform ska byta ut en GitHub-token mot en åtkomsttoken, kontrolleras värdena i den federerade identitetsautentiseringsuppgiften mot den angivna GitHub-token. Innan Azure beviljar en åtkomsttoken måste begäran matcha de villkor som definieras här.
- För jobb som är knutna till en miljö:
repo:< Organization/Repository >:environment:< Name >
- För Jobb som inte är knutna till en miljö inkluderar du referenssökvägen för gren/tagg baserat på referenssökvägen som används för att utlösa arbetsflödet:
repo:< Organization/Repository >:ref:< ref path>
. Till exempelrepo:n-username/ node_express:ref:refs/heads/my-branch
ellerrepo:n-username/ node_express:ref:refs/tags/my-tag
. - För arbetsflöden som utlöses av en pull-begärandehändelse:
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-exempel
Den utfärdaren är URL:en för utfärdaren av tjänstkontot (den OIDC-utfärdare URL för det hanterade klustret eller den OIDC-utfärdare URL för ett självhanterat kluster).
Det ämne är ämnesnamnet i de tokenen som utfärdas till tjänstkontot. Kubernetes använder följande format för ämnesnamn: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.
Det namnet är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
Listan över målgrupper visar de målgrupper som kan förekomma i den externa token. Det här fältet är obligatoriskt. Det rekommenderade värdet är 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"
]
}
Exempel på andra identitetsprovidrar
Du kan konfigurera en federerad identitetsautentiseringsuppgift i en app och skapa en förtroenderelation med andra externa identitetsprovidrar. I följande exempel används en programvaruarbetsbelastning som körs i Google Cloud som exempel:
-
name
är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare. -
id
: objekt-ID, program-ID (klient)-ID eller identifierar-URI för appen. -
subject
: måste matchasub
påståendet i tecknet som utfärdats av den externa identitetsleverantören. I det här exemplet med Google Cloud är ämne unikt ID för det tjänstkonto som du planerar att använda. -
issuer
: måste matchaiss
kravet i tokenen som utfärdats av tillhandahållaren av extern identitet. En URL som uppfyller OIDC Discovery-specifikationen. Microsoft Entra ID använder den här utfärdarens URL för att hämta de nycklar som krävs för att verifiera token. För Google Cloud är utfärdarehttps://accounts.google.com
. -
audiences
: visar en lista över målgrupper som kan visas i den externa token. Det här fältet är obligatoriskt. Det rekommenderade värdet är "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"
]
}
Visa en lista över autentiseringsuppgifter för federerad identitet i en app
Kör az ad app federated-credential list kommando för att visa en lista över autentiseringsuppgifterna för federerad identitet i din app.
Parametern id
anger identifierar-URI, program-ID eller objekt-ID för programmet.
az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444
Hämta en federerad identitetsautentiseringsuppgift i en app
Kör az ad app federated-credential show kommandot för att hämta en federerad identitetsreferens i din app.
Parametern id
anger identifierar-URI, program-ID eller objekt-ID för programmet.
federated-credential-id
anger ID:t eller namnet på den federerade identitetsautentiseringsuppgiften.
az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Ta bort en federerad identitetsautentiseringsuppgift från en app
Kör kommandot az ad app federated-credential delete för att ta bort en federerad identitetsautentiseringsuppgift från din app.
Parametern id
anger identifierar-URI, program-ID eller objekt-ID för programmet.
federated-credential-id
anger ID:t eller namnet på den federerade identitetsautentiseringsuppgiften.
az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Förutsättningar
- Om du vill köra exempelskripten har du två alternativ:
- Använd Azure Cloud Shell, som du kan öppna med hjälp av knappen Prova i det övre högra hörnet av kodblock.
- Kör skript lokalt med Azure PowerShell enligt beskrivningen i nästa avsnitt.
- Skapa en appregistrering i Microsoft Entra-ID. Ge din app åtkomst till de Azure-resurser som din externa programvaruarbetsbelastning riktar in sig på.
- Hitta objekt-ID:t för appen (inte programmets (klient)-ID:t), som du behöver i följande steg. Du hittar objekt-ID:t för appen i Administrationscenter för Microsoft Entra. Gå till listan över registrerade program och välj din appregistrering. I Översikt–>Essentialshittar du objekt-ID:t.
- Hämta ämne och utfärdare information för din externa IdP- och programvaruarbetsbelastning, som du behöver i följande steg.
Konfigurera Azure PowerShell lokalt
Så här använder du Azure PowerShell lokalt för den här artikeln i stället för att använda Cloud Shell:
Installera den senaste versionen av Azure PowerShell om du inte redan har gjort det.
Logga in på Azure.
Connect-AzAccount
Installera den senaste versionen av PowerShellGet.
Install-Module -Name PowerShellGet -AllowPrerelease
Du kan behöva
Exit
ut från den aktuella PowerShell-sessionen när du har kört det här kommandot för nästa steg.Installera förhandsversionen av modulen
Az.Resources
för att utföra de federerade identitetsautentiseringsåtgärderna i den här artikeln.Install-Module -Name Az.Resources -AllowPrerelease
Konfigurera en federerad identitetsautentiseringsuppgift i en app
Kör cmdleten New-AzADAppFederatedCredential för att skapa en ny federerad identitetsautentiseringsuppgift i ett program.
GitHub Actions-exempel
- ApplicationObjectId: objekt-ID för appen (inte programmets (klient)-ID) som du tidigare registrerade i Microsoft Entra-ID.
- Issuer identifierar GitHub som utfärdare av extern token.
-
Ämne identifierar GitHub-organisationen, lagringsplatsen och miljön för ditt GitHub Actions-arbetsflöde. När GitHub Actions-arbetsflödet begär att Microsofts identitetsplattform ska byta ut en GitHub-token mot en åtkomsttoken, kontrolleras värdena i den federerade identitetsautentiseringsuppgiften mot den angivna GitHub-token.
- För jobb som är knutna till en miljö:
repo:< Organization/Repository >:environment:< Name >
- För Jobb som inte är knutna till en miljö inkluderar du referenssökvägen för gren/tagg baserat på referenssökvägen som används för att utlösa arbetsflödet:
repo:< Organization/Repository >:ref:< ref path>
. Till exempelrepo:n-username/ node_express:ref:refs/heads/my-branch
ellerrepo:n-username/ node_express:ref:refs/tags/my-tag
. - För arbetsflöden som utlöses av en pull-begärandehändelse:
repo:< Organization/Repository >:pull-request
.
- För jobb som är knutna till en miljö:
- Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
-
Målgrupp visar en lista över målgrupper som kan visas i den externa token. Det här fältet är obligatoriskt. Det rekommenderade värdet är
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-exempel
- ApplicationObjectId: objekt-ID för appen (inte programmets (klient)-ID) som du tidigare registrerade i Microsoft Entra-ID.
- Issuer är url:en för utfärdaren av tjänstkontot (url för OIDC-utfärdare för det hanterade klustret eller url:en för OIDC-utfärdare för ett självhanterat kluster).
-
Ämne är ämnesnamnet i de token som utfärdas till tjänstkontot. Kubernetes använder följande format för ämnesnamn:
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
-
Målgrupper listar målgrupper som kan visas i ett
aud
anspråk för den externa tokenen.
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'
Exempel på andra identitetsprovidrar
Ange följande parametrar (med hjälp av en programvaruarbetsbelastning som körs i Google Cloud som exempel):
- ObjectID: objekt-ID för appen (inte programmets (klient)-ID) som du tidigare registrerade i Microsoft Entra-ID.
- Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
-
Ämne: måste matcha det
sub
kravet i tokenen som utfärdats av den externa identitetsprovidern. I det här exemplet med Google Cloud är ämne unikt ID för det tjänstkonto som du planerar att använda. -
Issuer: måste matcha det
iss
anspråket i den token som utfärdats av den externa identitetsleverantören. En URL som uppfyller OIDC Discovery-specifikationen. Microsoft Entra ID använder den här utfärdarens URL för att hämta de nycklar som krävs för att verifiera token. För Google Cloud är utfärdarenhttps://accounts.google.com
. -
Målgrupper: måste matcha
aud
anspråk i den externa tokenen. Av säkerhetsskäl bör du välja ett värde som är unikt för token som är avsett för Microsoft Entra-ID. Det rekommenderade värdet är "api://AzureADTokenExchange".
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'
Visa en lista över autentiseringsuppgifter för federerad identitet i en app
Kör cmdleten Get-AzADAppFederatedCredential för att visa en lista över autentiseringsuppgifterna för federerade identiteter för ett program.
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
Hämta en federerad identitetsautentiseringsuppgift i en app
Kör cmdleten Get-AzADAppFederatedCredential för att hämta den federerade identitetsautentiseringsuppgiften med ID från ett program.
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Ta bort en federerad identitetsautentiseringsuppgift från en app
Kör cmdleten Remove-AzADAppFederatedCredential för att ta bort en federerad identitetsautentiseringsuppgift från ett program.
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Förutsättningar
Skapa en appregistrering i Microsoft Entra-ID. Ge din app åtkomst till de Azure-resurser som din externa programvaruarbetsbelastning riktar in sig på.
Hitta objekt-ID:t för appen (inte programmets (klient)-ID:t), som du behöver i följande steg. Du hittar objekt-ID:t för appen i Administrationscenter för Microsoft Entra. Gå till listan över registrerade program och välj din appregistrering. I Översikt–>Essentialshittar du objekt-ID:t.
Hämta ämne och utfärdare information för din externa IdP- och programvaruarbetsbelastning, som du behöver i följande steg.
Microsoft Graph-slutpunkten (https://graph.microsoft.com
) exponerar REST-API:er för att skapa, uppdatera, ta bort federeradeIdentityCredentials- i program. Starta Azure Cloud Shell- och logga in på din klientorganisation för att köra Microsoft Graph-kommandon från AZ CLI.
Konfigurera en federerad identitetsautentiseringsuppgift i en app
GitHub Actions
Kör följande metod för att skapa en ny federerad identitetsautentiseringsuppgift i din app (anges av appens objekt-ID).
issuer
identifierar GitHub som utfärdare av extern token.
subject
identifierar GitHub-organisationen, lagringsplatsen och miljön för ditt GitHub Actions-arbetsflöde. När GitHub Actions-arbetsflödet begär att Microsofts identitetsplattform ska byta ut en GitHub-token mot en åtkomsttoken, kontrolleras värdena i den federerade identitetsautentiseringsuppgiften mot den angivna 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"]}'
Och du får svaret:
{
"@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"
}
I kodfragmentet är parametrarna följande:
-
name
: Namnet på ditt Azure-program. -
issuer
: Sökvägen till GitHub OIDC-providern:https://token.actions.githubusercontent.com
. Den här utfärdaren blir betrodd av ditt Azure-program. -
subject
: Innan Azure beviljar en åtkomsttoken måste begäran matcha de villkor som definieras här.- För jobb som är knutna till en miljö:
repo:< Organization/Repository >:environment:< Name >
- För jobb som inte är knutna till en miljö, inkludera referenssökvägen för gren/tagg baserat på referenssökvägen som används för att utlösa arbetsflödet:
repo:< Organization/Repository >:ref:< ref path>
. Till exempelrepo:n-username/ node_express:ref:refs/heads/my-branch
ellerrepo:n-username/ node_express:ref:refs/tags/my-tag
. - För arbetsflöden som utlöses av en pull-begärandehändelse:
repo:< Organization/Repository >:pull-request
.
- För jobb som är knutna till en miljö:
-
audiences
visar en lista över målgrupper som kan visas i den externa token. Det här fältet är obligatoriskt. Det rekommenderade värdet är "api://AzureADTokenExchange".
Kubernetes-exempel
Kör följande metod för att konfigurera en federerad identitetsautentiseringsuppgift i en app och skapa en förtroenderelation med ett Kubernetes-tjänstkonto. Ange följande parametrar:
-
issuer
är url:en för utfärdaren av tjänstkontot (url:en för OIDC-utfärdare för det hanterade klustret eller url:en för OIDC-utfärdare för ett självhanterat kluster). -
subject
är ämnesnamnet i de token som utfärdats till tjänstkontot. Kubernetes använder följande format för ämnesnamn:system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. -
name
är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare. -
audiences
visar en lista över målgrupper som kan visas i den externa token. Det här fältet är obligatoriskt. Det rekommenderade värdet är "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"]}'
Och du får svaret:
{
"@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"
}
Exempel på andra identitetsprovidrar
Kör följande metod för att konfigurera en federerad identitetsautentiseringsuppgift i en app och skapa en förtroenderelation med en extern identitetsprovider. Ange följande parametrar (med hjälp av en programvaruarbetsbelastning som körs i Google Cloud som exempel):
- namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
- ObjectID: objekt-ID för appen (inte programmets (klient)-ID) som du tidigare registrerade i Microsoft Entra-ID.
-
ämne: måste matcha det
sub
anspråket i token som utfärdats av den externa identitetsleverantören. I det här exemplet med Google Cloud är ämne unikt ID för det tjänstkonto som du planerar att använda. -
utfärdare: måste matcha det
iss
påståendet i den token som utfärdats av den externa identitetsleverantören. En URL som uppfyller OIDC Discovery-specifikationen. Microsoft Entra ID använder den här utfärdarens URL för att hämta de nycklar som krävs för att verifiera token. För Google Cloud är utfärdaren "https://accounts.google.com". - målgrupper listar målgrupperna som kan förekomma i den externa token. Det här fältet är obligatoriskt. Det rekommenderade värdet är "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"]}'
Och du får svaret:
{
"@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"
}
Visa en lista över autentiseringsuppgifter för federerad identitet i en app
Kör följande metod för att lista de federerade identitetsautentiseringsuppgifterna för en app (anges av appens objekt-ID):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'
Och du får ett svar som liknar:
{
"@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"
}
]
}
Hämta en federerad identitetsautentiseringsuppgift i en app
Kör följande metod för att hämta en federerad identitetsautentiseringsuppgift för en app (anges av appens objekt-ID):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Och du får ett svar som liknar:
{
"@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"
}
}
Ta bort en federerad identitetsautentiseringsuppgift från en app
Kör följande metod för att ta bort en federerad identitetsautentiseringsuppgift från en app (anges av appens objekt-ID):
az rest -m DELETE -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Se även
- Information om hur du använder federerad arbetsbelastningsidentitet för Kubernetes finns i det öppna källkodsprojektet Microsoft Entra Workload ID för Kubernetes.
- Information om hur du använder arbetsbelastningsidentitetsfederation för GitHub Actions finns i Konfigurera ett GitHub Actions-arbetsflöde för att hämta en åtkomsttoken.
- Läs GitHub Actions-dokumentationen om du vill veta mer om hur du konfigurerar ditt GitHub Actions-arbetsflöde för att hämta en åtkomsttoken från Microsofts identitetsprovider och få åtkomst till Azure-resurser.
- Mer information finns i om hur Microsoft Entra ID använder OAuth 2.0-klientautentiseringsuppgifter beviljar och en klientkontroll utfärdad av en annan IdP för att hämta en token.
- Information om det nödvändiga formatet för JWT-format som skapats av externa identitetsleverantörer finns i intygsformatet.