Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
Quan utilitzes la identitat gestionada de Power Platform, els connectors o paquets de plugins de Dataverse es poden connectar als recursos d'Azure sense gestionar les credencials. Aquest article descriu la configuració recomanada (versió 2), que construeix la credencial d'identitat federada (FIC) a partir d'un hash del Nom Distingit complet (DN) del certificat.
Nota
Utilitza Power Platform Managed Identity versió 2 per a tots els connectors nous i existents. Si mantens un complement que encara utilitza el format de la versió 1 (basat en CN), consulta Configurar la identitat gestionada versió 1. Per moure un connector existent a la versió 2, vegeu Actualitzar a la versió 2.
Per què versió 2
La versió 2 produeix un identificador de subjecte de longitud fixa, només ASCII, així que funciona amb qualsevol nom de certificat. La versió 1 falla en certs noms de certificats (CN):
-
Caràcters no ASCII al CN (per exemple, lletres accentuades) →
AADSTS70050: The Federated Managed Identity path is not properly formatted. -
Comes al CN (per exemple,
CN=Contoso, Inc.) → .AADSTS700213: No matching federated identity record found
Requisits previs
- Una subscripció a Azure amb accés per provar la identitat gestionada assignada per l'usuari (UAMI) o el registre d'aplicacions.
- Eines per a plug-ins o paquets de plug-in:
- Entorn de Desenvolupament Integrat (IDE), com Visual Studio, per construir complements
- Eina de registre de connectors
- SignTool.exe (Eina de signatura) per signar el conjunt de connectors
- Power Platform CLI
- Certificat vàlid per signar l'assemblatge del connector.
Configurar la identitat administrada
- Creeu un registre d'aplicació o una identitat administrada assignada per l'usuari.
- Construeix, signa i registra el connector.
- Configura la credencial d'identitat federada.
- Crea el registre d'identitat gestionat a Dataverse.
- Concedeix accés al recurs Azure.
- Valida la integració.
Pas 1: Crear un registre d'aplicació o una identitat gestionada assignada per l'usuari
Crea una identitat gestionada assignada per l'usuari o una aplicació a Microsoft Entra ID:
- Per a una identitat d'aplicació associada al complement (perquè puguis aplicar polítiques d'Azure), utilitza el registre d'aplicacions.
- Per a un principal de servei, proporciona una identitat gestionada assignada per l'usuari.
Nota
Captura l'ID de l'aplicació (client) i l'ID del llogater — els utilitzaràs en passos posteriors.
Pas 2: Construeix, signa i registra el connector
Crea un complement a Visual Studio. Utilitza l'ID de llogater del pas 1 i un abast com
https://{OrgName}.crm*.dynamics.com/.default. Utilitza IManagedIdentityService per sol·licitar un token:string AcquireToken(IEnumerable<string> scopes);Signa el complement amb el teu certificat.
Paquet de connectors (NuGet):
nuget sign YourPlugin.nupkg ` -CertificatePath MyCert.pfx ` -CertificatePassword "MyPassword" ` -Timestamper http://timestamp.digicert.comAssemblatge de connectors (SignTool):
signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dllRegistra el connector utilitzant l'eina de registre del connector.
Nota
Utilitza un certificat autosignat només per al desenvolupament o proves. No utilitzis certificats autosignats en producció. Per crear-ne un, vegeu Generar un certificat autosignat.
Pas 3: Configurar la credencial d'identitat federada
Al portal d'Azure, obre la teva aplicació o la identitat gestionada assignada per l'usuari (UAMI), ves a Certificats i secrets>Credencials>federades Afegeix credencial i selecciona Altre emissor. Després introdueix:
Emissor —
https://login.microsoftonline.com/{tenantID}/v2.0Tipus — Identificador explícit de subjecte
Identificador de subjecte — utilitza el format del teu tipus de certificat:
Certificat d'emissor de confiança (producció):
/eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}Certificat autosignat (només desenvolupament):
/eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/h/{hash}
Referència del segment
Segment Descripció eid1Versió del format d'identitat c/pubCodi al núvol per al núvol públic, GCC i primera estació de llançament al GCC t/{encodedTenantId}ID de llogater. Vegeu Obtenir l'ID de llogant codificat a/qzXoWDkuqUa3l6zM5mM0Rw/Només ús intern. No modifiquis n/pluginComponent plug-in e/{environmentId}ID de l'entorn i/{issuerHash}s/{subjectHash}SHA-256 Base64URL del DN complet de l'emissor/subjecte. Vegeu Calcular els hashs de l'emissor i del subjecte h/{hash}SHA-256 del certificat (només autosignat)
Calcula els hashs de l'emissor i del subjecte
Pren el hash SHA-256 de les cadenes DN completes de l'emissor i subjecte tal com apareixen al certificat, i codifica cadascuna com a Base64 segur per URL. Aconsegueix les cordes DN amb:
$cert = Get-PfxCertificate -FilePath "path\to\your.pfx"
Write-Host "Issuer: $($cert.Issuer)"
Write-Host "Subject: $($cert.Subject)"
Calcula els hashes (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"
O en 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('=');
}
La sortida és una cadena de 43 caràcters que conté només A-Z, a-z, 0-9, -, i _.
Important
Utilitza exactament la cadena de DN que utilitza el runtime (el .NET X509Certificate2.Issuer i X509Certificate2.Subject les propietats). Un DN amb un format diferent no coincidirà i falla amb AADSTS700213.
Nota
Per a desplegaments fora del núvol públic, estableix valors específics del núvol. Vegeu Entorns especialitzats al núvol d'Azure.
Pas 4: Crea el registre d'identitat gestionada a Dataverse
Envia una petició HTTP POST utilitzant un client REST. Per a la versió 2, estableix version a 2.
POST https://<<orgURL>>/api/data/v9.0/managedidentities
{
"applicationid": "<<appId>>",
"managedidentityid": "<<anyGuid>>",
"credentialsource": 2,
"subjectscope": 1,
"tenantid": "<<tenantId>>",
"version": 2
}
Després, vincula l'assemblatge del connector (o paquet) al registre:
PATCH https://<<orgURL>>/api/data/v9.0/pluginassemblies(<<PluginAssemblyId>>)
{
"managedidentityid@odata.bind": "/managedidentities(<<ManagedIdentityGuid>>)"
}
Per a un paquet de plugins, utilitza pluginpackages(<<PluginPackageId>>) en comptes d'això.
Pas 5: Concedeix accés al recurs d'Azure
Concedeix a l'aplicació o a la identitat gestionada assignada per l'usuari accés al recurs Azure que necessita, com ara Azure Key Vault.
Pas 6: Validar la integració
Activa el connector i confirma que adquireix un token i arriba al recurs d'Azure sense credencials separades.
Actualització a la versió 2
Si tens un connector a la versió 0 o 1, pots moure'l a la versió 2 sense haver de reconstruir ni tornar a registrar el connector.
Opció 1: CLI de Power Platform
Nota
Els verbs d'identitat gestionada per CLI no funcionen en sistemes operatius basats en Linux ni amb la identitat gestionada assignada per l'usuari (UAMI). Si la CLI no funciona per al teu certificat, utilitza l'Opció 2: Manual.
- Instal·la la CLI de Power Platform versió 2.8.1 o posterior. Vegeu Instal·lar Microsoft Power Platform CLI.
- Crea un perfil d'autenticació:
pac auth create - Comprova la versió actual:
pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2 - Actualització:
pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm - Activa el connector per validar.
Opció 2: Manual
Calcula els hashs de l'emissor i del subjecte de la versió 2. Vegeu Calcular els hashs de l'emissor i del subjecte.
Afegeix un nou FIC amb el format d'identificador de subjecte de la versió 2 (Pas 3).
Actualitza el registre d'identitat gestionada a la versió 2:
PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>){ "version": 2 }Activa el connector i verifica que l'adquisició de tokens ha tingut èxit.
Elimina l'antiga versió 1 FIC.
Nota
La versió 0 està obsoleta. El suport de la CLI per generar el FIC de la versió 2 està en procés.
Referència
Aconsegueix l'ID de llogant codificat
L'ID de tenant codificat és el GUID del tenant convertit en bytes i codificat com a Base64URL (no Base64 estàndard):
$tenantId = "<your-tenant-guid>"
$tenantGuid = [System.Guid]::Parse($tenantId)
$tenantBytes = $tenantGuid.ToByteArray()
$base64 = [System.Convert]::ToBase64String($tenantBytes)
$encodedTenantId = $base64.Replace('+', '-').Replace('/', '_').TrimEnd('=')
$encodedTenantId
Genera un certificat autosignat
Només per al desenvolupament o proves:
$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
Calcular l'autosignat {hash} (SHA-256 sobre el .cer; exportar des d'un .pfx primer si cal):
CertUtil -hashfile <CertificateFilePath> SHA256
$cert = Get-PfxCertificate -FilePath "path\to\your.pfx"
$cert.RawData | Set-Content -Encoding Byte -Path "extracted.cer"
Entorns especialitzats al núvol d'Azure
Estableix explícitament el prefix d'audiència, URL de l'emissor i subjecte quan es desplegui fora del núvol públic, GCC i la primera estació de llançament a GCC.
| Núvol | Públic | URL de l'emissor | Prefix del tema |
|---|---|---|---|
| GCC High i DoD | api://AzureADTokenExchangeUSGov |
https://login.microsoftonline.us |
/eid1/c/usg |
| Mooncake (Xina) | api://AzureADTokenExchangeChina |
https://login.partner.microsoftonline.cn |
/eid1/c/chn |
| Nacional dels Estats Units (USNAT) | api://AzureADTokenExchangeUSNat |
https://login.microsoftonline.eaglex.ic.gov |
/eid1/c/uss |
| Segur dels EUA (USSec) | api://AzureADTokenExchangeUSSec |
https://login.microsoftonline.scloud |
/eid1/c/usn |
Nota
El valor de l'audiència és sensible a majúscules i maiúscules. Per al núvol públic, GCC i l'estació de primera versió a GCC, els predeterminats són Audiència api://AzureADTokenExchange, Emissor https://login.microsoftonline.comi prefix /eid1/c/pubde subjecte.
Preguntes més freqüents
Com puc resoldre AADSTS700213: No s'ha trobat cap registre d'identitat federada coincident?
L'identificador de subjecte calculat en temps d'execució no coincideix amb cap FIC de l'aplicació. Comprova això:
- Has configurat i desat el FIC.
- L'emissor i el subjecte coincideixen amb el format del Pas 3. També podeu trobar el format esperat a la pila d'errors.
- El registre
versionés2i el FIC utilitza el format hash de la versió 2. - El hash es calcula a partir de la cadena DN (
X509Certificate2.Issuer/X509Certificate2.Subject). - L'emissor és
https://login.microsoftonline.com/{tenantId}/v2.0i l'audiència ésapi://AzureADTokenExchange(sensible a majúscules i minúscules).
Com puc resoldre AADSTS70050: El camí de la Identitat Gestionada Federada no està correctament formatat?
L'identificador de subjecte conté caràcters que el proveïdor d'identitat no accepta — normalment caràcters no ASCII al certificat CN de la versió 1. La versió 2 produeix un identificador de subjecte només ASCII i resol aquest error.
Com puc resoldre l'error "No es pot accedir o connectar-se a Power Platform"?
Per assegurar que els punts finals de Power Platform siguin accessibles i autoritzats, consulteu les URL i rangs d'adreces IP de Power Platform.