Konfigurere administrert identitet for Power Platform for dataverse plugin-moduler eller plugin-pakker

Når du bruker administrert identitet for Power Platform, kan dataverse plugin-moduler eller plugin-modulpakker koble til Azure ressurser uten å administrere legitimasjon. Denne artikkelen beskriver det anbefalte (versjon 2) -oppsettet, som bygger legitimasjonen for organisasjonsbasert identitet (FIC) fra en hash-kode for sertifikatets fullstendige unike navn (DN).

Notat

Bruk Power Platform-administrert identitet versjon 2 for alle nye og eksisterende plugin-moduler. Hvis du opprettholder et programtillegg som fremdeles bruker versjon 1 -formatet (CN-basert), kan du se Konfigurere administrert identitet versjon 1. Hvis du vil flytte en eksisterende plugin-modul til versjon 2, kan du se Oppgradere til versjon 2.

Hvorfor versjon 2

Versjon 2 produserer en fast, ASCII-bare emneidentifikator, slik at den fungerer med et hvilket som helst sertifikatnavn. Versjon 1 mislykkes på bestemte sertifikatnavn (CN-er):

  • Ikke-ASCII-tegn i CN (for eksempel uthevede bokstaver) → AADSTS70050: The Federated Managed Identity path is not properly formatted.
  • Komma i CN (for eksempel CN=Contoso, Inc.) → AADSTS700213: No matching federated identity record found.

Forutsetninger

Konfigurer administrert identitet

  1. Opprett en ny appregistrering eller brukertildelt administrert identitet.
  2. Bygg, logg på og registrer plugin-modulen.
  3. Konfigurer legitimasjonen for organisasjonsbasert identitet.
  4. Opprett den administrerte identitetsposten i Dataverse.
  5. Gi tilgang til Azure ressursen.
  6. Valider integreringen.

Trinn 1: Opprette en appregistrering eller brukertilordnet administrert identitet

Opprett enten en brukertilordet administrert identitet eller et program i Microsoft Entra ID:

Notat

Registrere program-ID ogleier-ID – du bruker dem i senere trinn.

Trinn 2: Bygge, signere og registrere plugin-modulen

  1. Opprett et tillegg i Visual Studio. Bruk leier-ID-en fra trinn 1 og et område som https://{OrgName}.crm*.dynamics.com/.default. Bruk IManagedIdentityService til å be om et token:

    string AcquireToken(IEnumerable<string> scopes);
    
  2. Logg på plugin-modulen med sertifikatet.

    Programtilleggspakke (NuGet):

    nuget sign YourPlugin.nupkg `
      -CertificatePath MyCert.pfx `
      -CertificatePassword "MyPassword" `
      -Timestamper http://timestamp.digicert.com
    

    Plugin-modulsamling (SignTool):

    signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
    
  3. Registrer plugin-modulen ved hjelp av registreringsverktøyet for programtillegg.

Notat

Bruk et selvsignert sertifikat bare for utvikling eller testing. Ikke bruk selvsignerte sertifikater i produksjon. Hvis du vil opprette et, kan du se Generere et selvsignert sertifikat.

Trinn 3: Konfigurere legitimasjonen for organisasjonsbasert identitet

Åpne appen eller den brukertilordnede administrerte identiteten (UAMI) i Azure-portalen, gå til Sertifikater og hemmeligheter> iorganisasjonslegitimasjonen>Legg til legitimasjon, og velg Annen utsteder. Skriv deretter inn:

  • Utstederhttps://login.microsoftonline.com/{tenantID}/v2.0

  • TypeEksplisitt subjektidentifikator

  • Emneidentifikator – bruk formatet for sertifikattypen:

    • Tillitsverdig utstedersertifikat (produksjon):

      /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}
      
    • Selvsignert sertifikat (bare utvikling):

      /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/h/{hash}
      

    Segmentreferanse

    Segment Beskrivelse
    eid1 Identitetsformatversjon
    c/pub Skykode for offentlig sky, GCC og første utgivelsesstasjon i GCC
    t/{encodedTenantId} Leietaker-ID. Se Få den kodede leier-ID-en
    a/qzXoWDkuqUa3l6zM5mM0Rw/ Bare intern bruk. Ikke endre
    n/plugin Plugin-komponent
    e/{environmentId} Miljø-ID
    i/{issuerHash} s/{subjectHash} SHA-256 Base64URL-hash av den fullstendige utsteder-/subjekt-DN-en. Se Beregne utstederen og emne-hash-kodene
    h/{hash} SHA-256 av sertifikatet (bare selvsignert)

Beregne utstederen og emne-hash-kodene

Ta SHA-256-hash-koden for den fullstendige utstederen og emne-DN-strengene slik de vises på sertifikatet, og kode hver av dem som url-safe Base64. Hent DN-strengene med:

$cert = Get-PfxCertificate -FilePath "path\to\your.pfx"
Write-Host "Issuer:  $($cert.Issuer)"
Write-Host "Subject: $($cert.Subject)"

Beregne hash-kodene (PowerShell):

function Get-Sha256Base64Url {
    param([string]$InputString)
    $bytes = [System.Text.Encoding]::UTF8.GetBytes($InputString)
    $sha256 = [System.Security.Cryptography.SHA256]::Create()
    $hash = $sha256.ComputeHash($bytes)
    $base64 = [Convert]::ToBase64String($hash)
    return $base64.Replace('+', '-').Replace('/', '_').TrimEnd('=')
}

$issuerHash = Get-Sha256Base64Url -InputString "<full issuer DN string>"
$subjectHash = Get-Sha256Base64Url -InputString "<full subject DN string>"
Write-Host "Issuer Hash:  $issuerHash"
Write-Host "Subject Hash: $subjectHash"

Eller i C#:

using System.Security.Cryptography;
using System.Text;

static string ComputeSha256Base64Url(string input)
{
    using var sha256 = SHA256.Create();
    byte[] hashBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(input));
    return Convert.ToBase64String(hashBytes)
        .Replace('+', '-')
        .Replace('/', '_')
        .TrimEnd('=');
}

Utdataene er en streng på 43 tegn som bare A-Zinneholder , , a-z0-9, -og _.

Viktig!

Bruk den nøyaktige DN-strengen kjøretiden bruker (.NET X509Certificate2.Issuer og X509Certificate2.Subject egenskaper). En annen formatert DN samsvarer ikke med og mislykkes med AADSTS700213.

Notat

Angi skyspesifikke verdier for distribusjoner utenfor offentlig sky. Se spesialiserte Azure skymiljøer.

Trinn 4: Opprette den administrerte identitetsposten i Datavers

Send en HTTP POST-forespørsel ved hjelp av en REST-klient. For versjon 2, satt version til 2.

POST https://<<orgURL>>/api/data/v9.0/managedidentities
{
  "applicationid": "<<appId>>",
  "managedidentityid": "<<anyGuid>>",
  "credentialsource": 2,
  "subjectscope": 1,
  "tenantid": "<<tenantId>>",
  "version": 2
}

Deretter knytter du tilleggsmodulen (eller pakken) til posten:

PATCH https://<<orgURL>>/api/data/v9.0/pluginassemblies(<<PluginAssemblyId>>)
{
  "managedidentityid@odata.bind": "/managedidentities(<<ManagedIdentityGuid>>)"
}

Bruk i stedet for en plugin-modulpakke pluginpackages(<<PluginPackageId>>) .

Trinn 5: Gi tilgang til den Azure ressursen

Gi programmet eller den brukertilordnede administrerte identiteten tilgang til Azure ressursen den trenger, for eksempel Azure Key Vault.

Trinn 6: Valider integreringen

Utløs plugin-modulen og bekreft at den henter et token og når Azure ressursen uten egen legitimasjon.

Oppgrader til versjon 2

Hvis du har en plugin-modul på versjon 0 eller versjon 1, kan du flytte den til versjon 2 uten å gjenoppbygge eller registrere plugin-modulen på nytt.

Alternativ 1: Power Platform CLI

Notat

Verbene for cli-administrert identitet fungerer ikke på Linux-baserte operativsystemer eller med brukertilordnet administrert identitet (UAMI). Hvis CLI ikke fungerer for sertifikatet, kan du bruke alternativ 2: Manuell.

  1. Installer Power Platform CLI versjon 2.8.1 eller nyere. Se Installer Microsoft Power Platform CLI.
  2. Opprett en godkjenningsprofil: pac auth create
  3. Kontroller gjeldende versjon: pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2
  4. Oppgradere: pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm
  5. Utløs plugin-modulen for å validere.

Alternativ 2: Manuell

  1. Beregne versjon 2-utstederen og emne-hash-kodene. Se Beregne utsteder og emne-hash-koder.

  2. Legg til en ny FIC med identifikatorformatet versjon 2 (trinn 3).

  3. Oppdater den administrerte identitetsposten til versjon 2:

    PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>)
    
    { "version": 2 }
    
  4. Utløs plugin-modulen, og kontroller at tokenoppkjøpet lykkes.

  5. Fjern den gamle FIC-versjonen 1.

Notat

Versjon 0 er avskrevet. CLI-støtte for generering av FIC-versjonen pågår.

Referanse

Hent den kodede tenant-ID-en

Den kodede leier-ID-en er leier-GUID-en konvertert til byte og kodet som Base64URL (ikke standard Base64):

$tenantId = "<your-tenant-guid>"
$tenantGuid = [System.Guid]::Parse($tenantId)
$tenantBytes = $tenantGuid.ToByteArray()
$base64 = [System.Convert]::ToBase64String($tenantBytes)
$encodedTenantId = $base64.Replace('+', '-').Replace('/', '_').TrimEnd('=')
$encodedTenantId

Generer et selvsignert sertifikat

Bare for utvikling eller testing:

$params = @{
    Type = 'Custom'
    Subject = 'E=admin@contoso.com,CN=Contoso'
    TextExtension = @(
        '2.5.29.37={text}1.3.6.1.5.5.7.3.4',
        '2.5.29.17={text}email=admin@contoso.com' )
    KeyAlgorithm = 'RSA'
    KeyLength = 2048
    SmimeCapabilities = $true
    CertStoreLocation = 'Cert:\CurrentUser\My'
}
New-SelfSignedCertificate @params

Beregne den selvsignerte {hash} (SHA-256 over .cer; eksporter fra en .pfx første om nødvendig):

CertUtil -hashfile <CertificateFilePath> SHA256

$cert = Get-PfxCertificate -FilePath "path\to\your.pfx"
$cert.RawData | Set-Content -Encoding Byte -Path "extracted.cer"

Spesialiserte Azure-skymiljøer

Angi nettadresse formålgruppe, utsteder og emneprefiks eksplisitt når du distribuerer utenfor offentlig sky, GCC og første utgivelsesstasjon i GCC.

Sky Målgruppe URL-adresse for utsteder Emneprefiks
GCC High og DoD api://AzureADTokenExchangeUSGov https://login.microsoftonline.us /eid1/c/usg
Mooncake (Kina) api://AzureADTokenExchangeChina https://login.partner.microsoftonline.cn /eid1/c/chn
US National (USNAT) api://AzureADTokenExchangeUSNat https://login.microsoftonline.eaglex.ic.gov /eid1/c/uss
US Secure (USSec) api://AzureADTokenExchangeUSSec https://login.microsoftonline.scloud /eid1/c/usn

Notat

Verdien Målgruppe skiller mellom små og store bokstaver. For offentlig sky, GCC og første utgivelsesstasjon i GCC er standardene Målgruppe api://AzureADTokenExchange, Utsteder https://login.microsoftonline.com, Emneprefiks /eid1/c/pub.

Vanlige spørsmål

Hvordan løser jeg AADSTS700213: Finner ingen samsvarende oppføring for føderert identitet?

Emneidentifikatoren som beregnes ved kjøretid, samsvarer ikke med FIC i appen. Kontroller at:

  1. Du konfigurerte og lagret FIC.
  2. Utstederen og emnet samsvarer med formatet i trinn 3. Du kan også finne det forventede formatet i feilstakken.
  3. Posten version er 2 og FIC bruker hash-formatet versjon 2.
  4. Hash-koden beregnes fra kjøretidens DN-streng (X509Certificate2.Issuer / X509Certificate2.Subject).
  5. Utstederen er https://login.microsoftonline.com/{tenantId}/v2.0 og målgruppen er api://AzureADTokenExchange (skiller mellom store og små bokstaver).

Hvordan løser jeg AADSTS70050: Banen for federert administrert identitet er ikke riktig formatert?

Emneidentifikatoren inneholder tegn som identitetsleverandøren ikke godtar – oftest ikke-ASCII-tegn i sertifikatet CN under versjon 1. Versjon 2 produserer en ASCII-bare emneidentifikator og løser denne feilen.

Hvordan løser jeg feilen «Kan ikke nå eller koble til Power Platform»

Hvis du vil sikre at Power Platform-endepunkter kan nås og tillates, kan du se Nettadresser og IP-adresseområder for Power Platform.