Konfigurer administreret identitet for Power Platform for Dataverse-plug-ins eller plug-in-pakker

Når du bruger administreret identitet i Power Platform, kan Dataverse-plug-ins eller plug-in-pakker oprette forbindelse til Azure ressourcer uden at administrere legitimationsoplysninger. I denne artikel beskrives den anbefalede konfiguration (version 2), som bygger legitimationsoplysningerne for organisationsnetværksidentitet (FIC) ud fra en hashværdi for certifikatets fulde entydige navn (DN).

Bemærkning

Brug Power Platform-administreret identitet version 2 til alle nye og eksisterende plug-ins. Hvis du vedligeholder en plug-in, der stadig bruger version 1-formatet (CN-baseret), skal du se Konfigurer administreret identitet version 1. Hvis du vil flytte en eksisterende plug-in til version 2, skal du se Opgrader til version 2.

Hvorfor version 2

Version 2 producerer et emne-id, der kun er ASCII, med fast længde, så det fungerer sammen med et hvilket som helst certifikatnavn. Version 1 mislykkes for visse certifikatnavne (CN'er):

  • Ikke-ASCII-tegn i CN (f.eks. bogstaver med accent) → AADSTS70050: The Federated Managed Identity path is not properly formatted.
  • Kommaer i CN (f.eks. CN=Contoso, Inc.) → AADSTS700213: No matching federated identity record found.

Forudsætninger

Konfigurer administreret identitet

  1. Opret en ny appregistrering eller brugertildelt administreret identitet.
  2. Byg, log på og registrer plug-in'en.
  3. Konfigurer legitimationsoplysninger for federeret identitet.
  4. Opret den administrerede identitetspost i Dataverse.
  5. Tildel adgang til den Azure ressource.
  6. Validér integrationen.

Trin 1: Opret en appregistrering eller en brugertildelt administreret identitet

Opret enten en brugertildelt administreret identitet eller et program i Microsoft Entra ID:

Bemærkning

Hent program-id'et (klient)-id'et og lejer-id'et – du bruger dem i senere trin.

Trin 2: Opret, signer og registrer plug-in'en

  1. Opret en plug-in i Visual Studio. Brug lejer-id'et fra trin 1 og et område som .https://{OrgName}.crm*.dynamics.com/.default Brug IManagedIdentityService til at anmode om et token:

    string AcquireToken(IEnumerable<string> scopes);
    
  2. Log på plug-in'en med dit certifikat.

    Plug-in-pakke (NuGet):

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

    Plug-in-samling (SignTool):

    signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
    
  3. Registrer plug-in'en ved hjælp af plug-in-registreringsværktøjet.

Bemærkning

Brug kun et selvsigneret certifikat til udvikling eller test. Brug ikke selvsignerede certifikater i produktion. Hvis du vil oprette et, skal du se Generér et selvsigneret certifikat.

Trin 3: Konfigurer legitimationsoplysningerne for organisationsnetværksidentitet

Åbn din app eller brugertildelte administrerede identitet (UAMI) på Azure-portalen, gå til Certifikater og hemmeligheder>Organisationslegitimationsoplysninger>Tilføj legitimationsoplysninger, og vælg Anden udsteder. Angiv derefter:

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

  • TypeEksplicit subjektidentifikator

  • Emne-id – brug formatet for din certifikattype:

    • Udstedercertifikat, der er tillid til (produktion):

      /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}
      
    • Selvsigneret certifikat (kun udvikling):

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

    Segmentreference

    Segment Beskrivelse
    eid1 Version af identitetsformat
    c/pub Cloudkode til offentlig cloud, GCC og første udgivelsesstation i GCC
    t/{encodedTenantId} Lejer-id. Se Hent det kodet tenant-id
    a/qzXoWDkuqUa3l6zM5mM0Rw/ Kun til intern brug. Rediger ikke
    n/plugin Plug-in-komponent
    e/{environmentId} Miljø-id
    i/{issuerHash} s/{subjectHash} SHA-256 Base64URL-hashen for den fulde udsteder/emne-DN. Se Beregning af udsteder- og emnehashs
    h/{hash} SHA-256 af certifikatet (kun selvsigneret)

Udregn udsteder- og emnehashs

Tag SHA-256-hashen for den fulde udsteder og de DN-emnestrenge, som de vises på certifikatet, og kod dem som Base64, der er sikre på URL-adressen. Hent DN-strengene med:

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

Beregning af hashen (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('=');
}

Outputtet er en streng på 43 tegn, der kun A-Zindeholder , a-z, 0-9, -og _.

Vigtig

Brug den nøjagtige DN-streng, som kørselstidspunktet bruger (.NET X509Certificate2.Issuer og X509Certificate2.Subject egenskaber). Et andet formateret DN stemmer ikke overens med og mislykkes med AADSTS700213.

Bemærkning

For udrulninger uden for den offentlige cloud skal du angive cloudspecifikke værdier. Se Specialiserede Azure cloudmiljøer.

Trin 4: Opret den administrerede identitetspost i Dataverse

Send en HTTP POST-anmodning ved hjælp af en REST-klient. For version 2 skal du angive version til 2.

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

Knyt derefter plug-in-samlingen (eller pakken) til posten:

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

Brug i stedet for en plug-in-pakke pluginpackages(<<PluginPackageId>>) .

Trin 5: Giv adgang til den Azure ressource

Tildel programmet eller den brugertildelt administrerede identitet adgang til den Azure ressource, det har brug for, f.eks. Azure Key Vault.

Trin 6: Validér integrationen

Udløs plug-in'en, og bekræft, at den henter et token og når den Azure ressource uden separate legitimationsoplysninger.

Opgrader til version 2

Hvis du har en plug-in på version 0 eller version 1, kan du flytte den til version 2 uden at genopbygge eller registrere plug-in'en igen.

Mulighed 1: Kommandolinjegrænseflade for Power Platform

Bemærkning

CLI-administrerede identitetsverber fungerer ikke på Linux-baserede operativsystemer eller med brugertildelt administreret identitet (UAMI). Hvis kommandolinjegrænsefladen ikke fungerer for dit certifikat, skal du bruge Mulighed 2: Manuel.

  1. Installér Power Platform CLI version 2.8.1 eller nyere. Se Installér Microsoft Power Platform kommandolinjegrænsefladen.
  2. Opret en godkendelsesprofil: pac auth create
  3. Kontrollér den aktuelle version: pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2
  4. Opgradere: pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm
  5. Udløs plug-in'en for at validere.

Mulighed 2: Manuel

  1. Beregn version 2-udsteder- og emnehash. Se Beregning af udsteder- og emnehashs.

  2. Tilføj et nyt FIC med emne-id-formatet version 2 (trin 3).

  3. Opdater den administrerede identitetspost til version 2:

    PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>)
    
    { "version": 2 }
    
  4. Udløs plug-in'en, og bekræft, at tokenanskaffelsen lykkes.

  5. Fjern den gamle version 1 FIC.

Bemærkning

Version 0 frarådes. CLI-understøttelse af oprettelse af FIC version 2 er i gang.

Reference

Hent det kodede lejer-id

Det kodede lejer-id er lejer-GUID'et, der konverteres til byte og kodes 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

Opret et selvsigneret certifikat

Kun til udvikling eller test:

$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

Beregn den selvsignerede {hash} (SHA-256 over .cer; eksportér fra en .pfx først, hvis det er nødvendigt):

CertUtil -hashfile <CertificateFilePath> SHA256

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

Specialiserede Azure-cloudmiljøer

Angiv målgruppen, udstederens URL-adresse og præfikset Emne eksplicit, når du udruller uden for den offentlige cloud, GCC og den første udgivelsesstation i GCC.

Sky Målgruppe URL-adresse til udsteder Præfiks for emne
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

Bemærkning

Værdien Audience skelner mellem store og små bogstaver. For den offentlige cloud, GCC og den første udgivelsesstation i GCC er standarden Målgruppe api://AzureADTokenExchange, Udsteder https://login.microsoftonline.com, Emnepræfiks /eid1/c/pub.

Ofte stillede spørgsmål

Hvordan løser jeg AADSTS700213: Der blev ikke fundet en matchende identitetspost i organisationsnetværket?

Subjektidentifikatoren, der beregnes under kørsel, matcher ikke nogen FIC i appen. Kontrollér, at:

  1. Du har konfigureret og gemt FIC.
  2. Udstederen og emnet stemmer overens med formatet i trin 3. Du kan også finde det forventede format i fejlstakken.
  3. Posten version er 2 , og FIC bruger hashformatet version 2.
  4. Hashen beregnes ud fra runtimes DN-streng (X509Certificate2.Issuer / X509Certificate2.Subject).
  5. Udstederen er https://login.microsoftonline.com/{tenantId}/v2.0 , og målgruppen er api://AzureADTokenExchange (forskel på store og små bogstaver).

Hvordan løser jeg AADSTS70050: Stien til den administrerede identitet i organisationsnetværket er ikke formateret korrekt?

Emne-id'et indeholder tegn, som identitetsudbyderen ikke accepterer – oftest ikke-ASCII-tegn i certifikat-CN under version 1. Version 2 opretter et emne-id, der kun er ASCII, og løser denne fejl.

Hvordan løser jeg fejlen "Kan ikke oprette forbindelse til Power Platform"?

Hvis du vil sikre, at Power Platform-slutpunkter kan nås og tillades, skal du se URL-adresser og IP-adresseområder i Power Platform.