Dela via


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 och subject 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 mot issuer och subject 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åket issuer 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:

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

  2. I listrutan för scenariot med federerade autentiseringsuppgifter ska du välja GitHub-åtgärder som distribuerar Azure-resurser.

  3. Ange organisation och lagringsplats för ditt GitHub Actions-arbetsflöde.

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

  5. Lägg till en Namn för federerade autentiseringsuppgifter.

  6. Issuer, Audiencesoch Subject identifier fält fylls i automatiskt baserat på de värden du angav.

  7. Välj Lägg till för att konfigurera federerade autentiseringsuppgifter.

    Skärmbild av fönstret Lägg till en autentiseringsuppgift som visar exempelvärden.

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.

    Skärmbild som visar hur du kopierar program-ID och klient-ID från administrationscentret för Microsoft Entra.

  • 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ärdaren https://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)

  1. Gå till Microsoft Entra-ID och välj det program där du vill konfigurera den federerade identitetsautentiseringsuppgiften.
  2. I det vänstra navigeringsfönstret väljer du Certifikat & hemligheter.
  3. Under fliken Federerade autentiseringsuppgifter väljer du + Lägg till autentiseringsuppgifter.
  4. I fönstret Lägg till en autentiseringsuppgift som visas väljer du Annan utfärdarei listrutan bredvid federerat autentiseringsscenarie.
  5. I Value ange det anspråksmatchningsuttryck som du vill använda.

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å.
  • 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 exempel repo:n-username/ node_express:ref:refs/heads/my-branch eller repo: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 matcha sub 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 matcha iss 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:

  1. Installera den senaste versionen av Azure PowerShell om du inte redan har gjort det.

  2. Logga in på Azure.

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

  4. 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 exempel repo:n-username/ node_express:ref:refs/heads/my-branch eller repo: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.
  • 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ärdaren https://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 exempel repo:n-username/ node_express:ref:refs/heads/my-branch eller repo: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.
  • 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