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:t 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 om 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ör eller Programägare. Behörigheten microsoft.directory/applications/credentials/update krävs för att uppdatera en federerad identitetsautentisering.
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 de viktigaste delarna av informationen som behövs för att konfigurera förtroenderelationen. Kombinationen av
issuer
ochsubject
måste vara unik för appen. När den externa programvaruarbetsbelastningen begär Microsofts identitetsplattform att byta ut den externa token mot en åtkomsttoken, kontrolleras utfärdaren och ämnesvärdena för den federerade identitetsautentiseringsuppgiften mot ochsubject
anspråkenissuer
som anges i den externa token. Om verifieringskontrollen godkänns utfärdar Microsofts identitetsplattform en åtkomsttoken till den externa programvaruarbetsbelastningen.utfärdaren är URL:en för den externa identitetsprovidern och måste matcha anspråket
issuer
för den externa token som utbyts. Obligatoriska. Om anspråketissuer
har inledande eller avslutande blanksteg i värdet blockeras tokenutbytet. Det här fältet har en teckengräns på 600 tecken.ämne är identifieraren för den externa programvaruarbetsbelastningen och måste matcha (
subject
) anspråketsub
för den externa token som utbyts. subjektet 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.Viktigt!
Ämnesinställningsvärdena 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.
Viktigt!
Om du av misstag lägger till felaktig extern arbetsbelastningsinformation i ämnesinställningen skapas den federerade identitetsautentiseringsuppgiften utan fel. Felet blir inte uppenbart förrän tokenutbytet misslyckas.
målgrupper visar de målgrupper som kan visas i den externa token. Obligatoriska. 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 anspråket
aud
i den inkommande token.name är den unika identifieraren för den federerade identitetsautentiseringsuppgiften. Obligatoriska. 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 de federerade identitetsautentiseringsuppgifterna. Valfritt. 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 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 administrationscentret för Microsoft Entra. Gå till listan över appregistreringar och välj din appregistrering. I Overview-Essentials hittar du objekt-ID>:t.
Hämta ämnes- och utfärdarinformation för din externa IdP- och programvaruarbetsbelastning, som du behöver i följande steg.
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 administrationscentret för Microsoft Entra. Välj Certifikat och hemligheter i det vänstra navigeringsfönstret, välj fliken Federerade autentiseringsuppgifter och välj Lägg till autentiseringsuppgifter.
I listrutan Federerade autentiseringsuppgifter väljer du GitHub actions deploying Azure resources (GitHub actions deploying Azure resources).
Ange organisation och lagringsplats för ditt GitHub Actions-arbetsflöde.
För Entitetstyp väljer du Miljö, Gren, Pull-begäran eller Tagg 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. Mer information finns i exemplen.
Lägg till ett namn för de federerade autentiseringsuppgifterna.
Fälten Utfärdare, Målgrupper och Ämnesidentifierare fylls i automatiskt baserat på de värden som du har angett.
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
program-ID :t (klient)AZURE_TENANT_ID
katalog-ID :t (klientorganisation)Följande skärmbild visar hur du kopierar program-ID och klientorganisations-ID.
AZURE_SUBSCRIPTION_ID
ditt prenumerations-ID. 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-begärandehändelse på huvudgrenen:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Ange en entitetstyp för Branch och ett GitHub-grennamn för "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 miljö och ett GitHub-miljönamn för "produktion".
Taggexempel
Till exempel för ett arbetsflöde som utlöses av en push-överföring 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 tagg och ett GitHub-taggnamn för "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 administrationscentret för Microsoft Entra. Välj Certifikat och hemligheter i det vänstra navigeringsfönstret, välj fliken Federerade autentiseringsuppgifter och välj Lägg till autentiseringsuppgifter.
Välj Scenariot Kubernetes accessing Azure resources (Kubernetes åtkomst till Azure-resurser ) i listrutan.
Fyll i fälten Cluster issuer URL, Namespace, Service account name och Name :
- Url för kluster utfärdare är OIDC-utfärdarens URL för det hanterade klustret eller URL:en för OIDC-utfärdaren för ett självhanterat kluster.
- Namnet på tjänstkontot ä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 administrationscentret för Microsoft Entra. Välj Certifikat och 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 den nedrullningsbara menyn.
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 anspråket
sub
i den token som utfärdats av den externa identitetsprovidern. I det här exemplet med Google Cloud är ämnet unikt ID för det tjänstkonto som du planerar att använda. - Utfärdare: måste matcha anspråket
iss
i den token som utfärdats av den externa identitetsprovidern. 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".
Visa en lista över autentiseringsuppgifter för federerad identitet i en app
Hitta din appregistrering i appregistreringsupplevelsen i administrationscentret för Microsoft Entra. Välj Certifikat och 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 administrationscentret för Microsoft Entra. Välj Certifikat och 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.
Förutsättningar
- Om du inte redan har ett Azure-konto registrerar du 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 installerar du Azure CLI. Om du kör i Windows eller macOS kan du 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 om du vill hitta versionen och de beroende bibliotek 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 administrationscentret för Microsoft Entra. Gå till listan över registrerade program och välj din appregistrering. I Overview-Essentials hämtar du värdet objekt-ID, program-ID (klient) eller program-ID> som du behöver i följande steg.
- Hämta ämnes- och utfärdarinformation 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
Namnet anger namnet på din federerade identitetsautentiseringsuppgift.
Utfärdaren identifierar sökvägen till GitHub OIDC-providern: https://token.actions.githubusercontent.com/
. Den här utfärdaren blir betrodd av ditt Azure-program.
ämne identifierar GitHub-organisationen, lagringsplatsen och miljön för ditt GitHub Actions-arbetsflöde. När GitHub Actions-arbetsflödet begär Microsofts identitetsplattform att 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>
. Exempel:repo: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
utfärdaren är url:en för utfärdaren av tjänstkontot (OIDC-utfärdarens URL för det hanterade klustret eller URL:en för OIDC-utfärdaren för ett självhanterat kluster).
ämne ä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.
målgrupper visar de målgrupper som kan visas i den externa token. 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.
ämne: måste matcha anspråket sub
i den token som utfärdats av den externa identitetsprovidern. I det här exemplet med Google Cloud är ämnet unikt ID för det tjänstkonto som du planerar att använda.
utfärdare: måste matcha anspråket iss
i den token som utfärdats av den externa identitetsprovidern. 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: visar en lista över målgrupper som kan visas i den externa token. 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 kommandot az ad app federated-credential list för att visa en lista över autentiseringsuppgifterna för federerad identitet i din app.
Id-parametern 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 kommandot az ad app federated-credential show för att hämta en federerad identitetsautentiseringsuppgift i din app.
Id-parametern anger identifierar-URI, program-ID eller objekt-ID för programmet.
ID:t för federerade autentiseringsuppgifter anger ID:t eller namnet på den federerade identitetens autentiseringsuppgifter.
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 identitetsautentisering från din app.
Id-parametern anger identifierar-URI, program-ID eller objekt-ID för programmet.
ID:t för federerade autentiseringsuppgifter anger ID:t eller namnet på den federerade identitetens autentiseringsuppgifter.
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 administrationscentret för Microsoft Entra. Gå till listan över registrerade program och välj din appregistrering. I Overview-Essentials hittar du objekt-ID>:t.
- Hämta ämnes- och utfärdarinformation 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
avsluta 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 identitetsautentisering i ett program.
GitHub Actions-exempel
- ApplicationObjectId: objekt-ID för appen (inte programmets (klient)-ID:t) som du tidigare registrerade i Microsoft Entra-ID.
- Utfärdaren 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 Microsofts identitetsplattform att 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>
. Exempel:repo: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ålgruppen visar de målgrupper som kan visas i den externa token. 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:t) som du tidigare registrerade i Microsoft Entra-ID.
- Utfärdaren är url:en för utfärdaren av tjänstkontot (OIDC-utfärdarens URL för det hanterade klustret eller URL:en för OIDC-utfärdaren 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ålgruppen visar de målgrupper som kan visas i anspråket
aud
för den externa 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'
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:t för appen (inte programmets (klient)-ID:t) som du tidigare registrerade i Microsoft Entra-ID.
- Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
- Ämne: måste matcha anspråket
sub
i den token som utfärdats av den externa identitetsprovidern. I det här exemplet med Google Cloud är ämnet unikt ID för det tjänstkonto som du planerar att använda. - Utfärdare: måste matcha anspråket
iss
i den token som utfärdats av den externa identitetsprovidern. 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: måste matcha anspråket
aud
i den externa token. 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 federerad identitet 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 de federerade identitetsautentiseringsuppgifterna efter 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 identitetsautentisering 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 administrationscentret för Microsoft Entra. Gå till listan över registrerade program och välj din appregistrering. I Overview-Essentials hittar du objekt-ID>:t.
Hämta ämnes- och utfärdarinformation 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). Utfärdaren 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 Microsofts identitetsplattform att 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"
}
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.
ämne: 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>
. Exempel:repo: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
.
målgrupper visar de målgrupper som kan visas i den externa token. 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:
- utfärdaren är url:en för utfärdaren av tjänstkontot (OIDC-utfärdarens URL för det hanterade klustret eller URL:en för OIDC-utfärdaren för ett självhanterat kluster).
- ämne ä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.
- målgrupper visar de målgrupper som kan visas i den externa token. 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):
- name är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
- ObjectID: objekt-ID:t för appen (inte programmets (klient)-ID:t) som du tidigare registrerade i Microsoft Entra-ID.
- ämne: måste matcha anspråket
sub
i den token som utfärdats av den externa identitetsprovidern. I det här exemplet med Google Cloud är ämnet unikt ID för det tjänstkonto som du planerar att använda. - utfärdare: måste matcha anspråket
iss
i den token som utfärdats av den externa identitetsprovidern. 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 visar de målgrupper som kan visas i den externa token. 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'
Nästa steg
- Information om hur du använder arbetsbelastningsidentitetsfederation för Kubernetes finns i Microsoft Entra Workload ID for Kubernetes öppen källkod project.
- 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 få en åtkomsttoken från Microsofts identitetsprovider och få åtkomst till Azure-resurser.
- Mer information finns i hur Microsoft Entra ID använder OAuth 2.0-klientautentiseringsuppgifterna och ett klientintyg som utfärdats av en annan IdP för att hämta en token.
- Information om det nödvändiga formatet för JWT:er som skapats av externa identitetsprovidrar finns i kontrollformatet.