Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
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
- Et Azure abonnement med adgang til klargøring af brugertildelt administreret identitet (UAMI) eller programregistrering.
- Værktøjer til plug-ins eller plug-in-pakker:
- Integreret udviklingsmiljø (IDE), f.eks. Visual Studio, til at bygge plug-in
- Plug-in-registreringsværktøj
- SignTool.exe (signeringsværktøj) for at signere plug-in-assembly
- Kommandolinjegrænseflade for Power Platform
- Et gyldigt certifikat til at signere plug-in-assemblyen.
Konfigurer administreret identitet
- Opret en ny appregistrering eller brugertildelt administreret identitet.
- Byg, log på og registrer plug-in'en.
- Konfigurer legitimationsoplysninger for federeret identitet.
- Opret den administrerede identitetspost i Dataverse.
- Tildel adgang til den Azure ressource.
- 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:
- For en app-identitet, der er knyttet til plug-in'en (så du kan anvende Azure politikker), skal du bruge programregistrering.
- Klargør en brugertildelt administreret identitet for en tjenesteprincipal.
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
Opret en plug-in i Visual Studio. Brug lejer-id'et fra trin 1 og et område som .
https://{OrgName}.crm*.dynamics.com/.defaultBrug IManagedIdentityService til at anmode om et token:string AcquireToken(IEnumerable<string> scopes);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.comPlug-in-samling (SignTool):
signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dllRegistrer 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:
Udsteder —
https://login.microsoftonline.com/{tenantID}/v2.0Type — Eksplicit 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 eid1Version af identitetsformat c/pubCloudkode 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/pluginPlug-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.
- Installér Power Platform CLI version 2.8.1 eller nyere. Se Installér Microsoft Power Platform kommandolinjegrænsefladen.
- Opret en godkendelsesprofil:
pac auth create - Kontrollér den aktuelle version:
pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2 - Opgradere:
pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm - Udløs plug-in'en for at validere.
Mulighed 2: Manuel
Beregn version 2-udsteder- og emnehash. Se Beregning af udsteder- og emnehashs.
Tilføj et nyt FIC med emne-id-formatet version 2 (trin 3).
Opdater den administrerede identitetspost til version 2:
PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>){ "version": 2 }Udløs plug-in'en, og bekræft, at tokenanskaffelsen lykkes.
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:
- Du har konfigureret og gemt FIC.
- Udstederen og emnet stemmer overens med formatet i trin 3. Du kan også finde det forventede format i fejlstakken.
- Posten
versioner2, og FIC bruger hashformatet version 2. - Hashen beregnes ud fra runtimes DN-streng (
X509Certificate2.Issuer/X509Certificate2.Subject). - Udstederen er
https://login.microsoftonline.com/{tenantId}/v2.0, og målgruppen erapi://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.