Power Platform felügyelt identitás beállítása Dataverse beépülő modulokhoz vagy beépülőmodul-csomagokhoz

Ha a Power Platform felügyelt identitását használja, a Dataverse beépülő moduljai vagy beépülőmodul-csomagjai anélkül csatlakozhatnak Azure-erőforrásokhoz, hogy hitelesítő adatokat kellene kezelniük. Ez a cikk az ajánlott (2. verzió) beállítást ismerteti, amely a tanúsítvány teljes megkülönböztető nevének (DN) kivonatából hozza létre az összevont identitás hitelesítő adatait (FIC).

Note

A Power Platform által felügyelt identitás 2- es verziójának használata minden új és meglévő beépülő modulhoz. Ha olyan beépülő modult tart fenn, amely továbbra is az 1-es (CN-alapú) formátumot használja, tekintse meg a felügyelt identitás 1-es verziójának beállításával kapcsolatos témakört. Meglévő beépülő modul 2-es verzióra való áthelyezéséhez lásd: Frissítés a 2- es verzióra.

Miért a 2- es verzió?

A 2. verzió rögzített hosszúságú, csak ASCII-tulajdonosazonosítót hoz létre, így bármilyen tanúsítványnévvel működik. Az 1. verzió bizonyos tanúsítványneveken (CN-eken) meghiúsul:

  • A CN nem ASCII karakterei (például ékezetes betűk) → AADSTS70050: The Federated Managed Identity path is not properly formatted.
  • Vesszők a CN -ben (például CN=Contoso, Inc.) → AADSTS700213: No matching federated identity record found.

Prerequisites

  • Egy Azure előfizetés, amely hozzáféréssel rendelkezik a felhasználó által hozzárendelt felügyelt identitás (UAMI) kiépítéséhez vagy az alkalmazásregisztrációhoz.
  • Beépülő modulokhoz vagy beépülő csomagokhoz készült eszközök:
  • Érvényes tanúsítvány a beépülő modul szerelvényének aláírásához.

Felügyelt identitás beállítása

  1. Hozzon létre egy új alkalmazásregisztrációt vagy felhasználó által hozzárendelt felügyelt identitást.
  2. Hozza létre, jelentkezzen be és regisztrálja a beépülő modult.
  3. Konfigurálja az összevont identitás hitelesítő adatait.
  4. Hozza létre a felügyelt identitásrekordot a Dataverse-ben.
  5. Adjon hozzáférést a Azure erőforráshoz.
  6. Ellenőrizze az integrációt.

1. lépés: Alkalmazásregisztráció vagy felhasználó által hozzárendelt felügyelt identitás létrehozása

Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást vagy egy alkalmazást a Microsoft Entra ID:

Note

Rögzítse az alkalmazás (ügyfél) azonosítóját és a bérlőazonosítót – ezeket a későbbi lépésekben használhatja.

2. lépés: A beépülő modul létrehozása, aláírása és regisztrálása

  1. Hozzon létre egy bővítményt a Visual Studióban. Használja az 1. lépésben szereplő bérlőazonosítót és egy olyan hatókört, mint a https://{OrgName}.crm*.dynamics.com/.default. Használja az IManagedIdentityService szolgáltatást token kéréséhez:

    string AcquireToken(IEnumerable<string> scopes);
    
  2. Írja alá a bővítményt a tanúsítványával.

    Bővítménycsomag (NuGet):

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

    Beépülőmodul-összeállítás (SignTool):

    signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
    
  3. Regisztrálja a beépülő modult a beépülő modul regisztrációs eszközével.

Note

Csak fejlesztéshez vagy teszteléshez használjon önaláírt tanúsítványt. Ne használjon önaláírt tanúsítványokat éles környezetben. A létrehozáshoz tekintse meg az önaláírt tanúsítvány létrehozása című témakört.

3. lépés: Az összevont identitás hitelesítő adatainak konfigurálása

Az Azure Portalon nyissa meg az alkalmazását vagy a felhasználó által hozzárendelt felügyelt identitást (UAMI), majd lépjen a Tanúsítványok és titkos kulcsok>Szövetségi hitelesítő adatok>Hitelesítő adat hozzáadása elemre, és válassza a Másik kibocsátó lehetőséget. Ezután írja be a következőt:

  • Kiállító – https://login.microsoftonline.com/{tenantID}/v2.0

  • Típus – Explicit tárgyazonosító

  • Tulajdonosazonosító – használja a tanúsítványtípus formátumát:

    • Megbízható kiállítói tanúsítvány (éles):

      /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}
      
    • Önaláírt tanúsítvány (csak fejlesztés esetén):

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

    Szegmenshivatkozás

    Szegmens Leírás
    eid1 Identitásformátum verziója
    c/pub Felhőkód a nyilvános felhőhöz, a GCC-hez és az első kiadási állomáshoz a GCC-ben
    t/{encodedTenantId} Bérlőazonosító. Lásd : A kódolt bérlőazonosító lekérése
    a/qzXoWDkuqUa3l6zM5mM0Rw/ Csak belső használatra. Ne módosítsd
    n/plugin Beépülő modul összetevő
    e/{environmentId} Környezet azonosítója
    i/{issuerHash} s/{subjectHash} SHA-256 Base64URL kivonat a teljes kiállító/tulajdonos megkülönböztető névről. Lásd: A kiállító és az alany hashértékeinek kiszámítása
    h/{hash} SHA-256 a tanúsítványból (csak önaláírt)

Számítsa ki a kiállító és az alany hashértékeit

Készítse el a teljes kiállítói és alanyi DN-karakterláncok SHA-256 kivonatát pontosan úgy, ahogyan a tanúsítványban szerepelnek, majd mindegyiket URL-biztos Base64 formában kódolja. A DN-karakterláncok lekérése a következőkkel:

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

A kivonatok kiszámítása (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"

Vagy C#-ban:

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

A kimenet egy 43 karakteres karakterlánc, amely kizárólag A-Z, a-z, 0-9, - és _ elemeket tartalmaz.

Important

Használja a futtatókörnyezet által használt pontos DN-karakterláncot (a .NET X509Certificate2.Issuer és X509Certificate2.Subject tulajdonságait). A másképp formázott DN nem fog egyezni, és meghiúsul a(z) AADSTS700213 elemmel.

Note

A nyilvános felhőn kívüli üzemelő példányok esetében állítson be felhőspecifikus értékeket. Lásd: Specializált Azure felhőkörnyezetek.

4. lépés: A felügyelt identitásrekord létrehozása a Dataverse-ben

HTTP POST-kérés küldése REST-ügyféllel. A 2-es verzióhoz állítsa a(z) version értékét erre: 2.

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

Ezután kösse a beépülő modul szerelvényét (vagy csomagját) a rekordhoz:

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

Beépülő modulcsomag esetén használja pluginpackages(<<PluginPackageId>>) helyette.

5. lépés: Hozzáférés biztosítása az Azure erőforráshoz

Adjon hozzáférést az alkalmazásnak vagy a felhasználó által hozzárendelt felügyelt identitásnak a szükséges Azure erőforráshoz, például Azure Key Vault.

6. lépés: Az integráció ellenőrzése

Indítsa el a bővítményt, és győződjön meg arról, hogy megszerzi a tokent, és külön hitelesítő adatok nélkül hozzáfér az Azure-erőforráshoz.

Frissítés a 2- es verzióra

Ha rendelkezik beépülő modulval a 0-s vagy az 1-es verzióban, a beépülő modul újraépítése vagy újbóli regisztrálása nélkül áthelyezheti a 2- es verzióra.

1. lehetőség: A Power Platform parancssori felülete

Note

A CLI által felügyelt identitás-parancsai nem működnek Linux-alapú operációs rendszereken, illetve felhasználó által hozzárendelt felügyelt identitással (UAMI). Ha a parancssori felület nem működik a tanúsítványhoz, használja a 2. lehetőséget: Manuális.

  1. Telepítse a Power Platform CLI 2.8.1-es vagy újabb verzióját. Lásd: Microsoft Power Platform parancssori felület telepítése.
  2. Hitelesítési profil létrehozása: pac auth create
  3. Ellenőrizze az aktuális verziót: pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2
  4. Frissítés: pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm
  5. Aktiválja a beépülő modult az ellenőrzéshez.

2. lehetőség: Manuális

  1. Számítsa ki a 2-es verziójú kiállító- és alanykivonatokat. Lásd: A kiállító és az alany hash-einek kiszámítása.

  2. Adjon hozzá egy új FIC-t a 2-es verziójú tulajdonosazonosító formátumával (3. lépés).

  3. Frissítse a felügyelt identitásrekordot a 2. verzióra:

    PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>)
    
    { "version": 2 }
    
  4. Indítsa el a bővítményt, és ellenőrizze, hogy a token beszerzése sikeres-e.

  5. Távolítsa el a régi 1-es verziójú FIC-t.

Note

A 0-s verzió elavult. A 2- es verziójú FIC létrehozásának parancssori felületi támogatása folyamatban van.

Reference

A kódolt bérlőazonosító lekérése

A kódolt bérlőazonosító a bájtokká konvertált és Base64URL formátumban kódolt bérlői GUID (nem 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

Önaláírt tanúsítvány létrehozása

Csak fejlesztéshez vagy teszteléshez:

$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

Számítsa ki a saját aláírású {hash}-t (SHA-256 a(z) .cer alapján; ha szükséges, először exportálja egy .pfx-ből):

CertUtil -hashfile <CertificateFilePath> SHA256

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

Speciális Azure felhőkörnyezetek

A Célközönség, a Kiállító URL-címe és a Tárgy előtag explicit beállítása nyilvános felhőn, GCC-n és első kiadási állomáson kívüli üzembe helyezéskor a GCC-ben.

Felhő Közönség Kiállító URL-címe Tárgyelőtag
GCC High és DoD api://AzureADTokenExchangeUSGov https://login.microsoftonline.us /eid1/c/usg
Mooncake (Kína) 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

Note

A Célközönség érték megkülönbözteti a kis- és nagybetűket. A nyilvános felhő, a GCC és a GCC első kiadási állomása esetében az alapértelmezett értékek a Célközönség api://AzureADTokenExchange, a Kiállító https://login.microsoftonline.comés a Tárgy előtag /eid1/c/pub.

Gyakori kérdések (GYIK)

Hogyan oldhatom fel a AADSTS700213: Nem található egyező összevont identitásrekord?

A futtatókörnyezetben kiszámított tulajdonosazonosító nem egyezik az alkalmazás egyetlen FIC-ével sem. Ellenőrizze ezt:

  1. Konfigurálta és mentette a FIC-t.
  2. A kiállító és a tárgy megegyezik a 3. lépés formátumával. A hibaveremben a várt formátum is megtalálható.
  3. A rekord version2, a FIC pedig a 2-es verziójú hashformátumot használja.
  4. A kivonat kiszámítása a futtatókörnyezet DN-sztringjéből (X509Certificate2.Issuer / X509Certificate2.Subject) történik.
  5. A kiállító https://login.microsoftonline.com/{tenantId}/v2.0, a közönség pedig api://AzureADTokenExchange (megkülönbözteti a kis- és nagybetűket).

Hogyan oldhatom meg az AADSTS70050 hibát: A föderált felügyelt identitás útvonalának formátuma nem megfelelő?

A tárgyazonosító olyan karaktereket tartalmaz, amelyek az identitásszolgáltató által nem elfogadottak – leggyakrabban nem ASCII-karakterek az 1. verzióban lévő CN-tanúsítványban. A 2. verzió kizárólag ASCII-karaktereket tartalmazó alanyazonosítót állít elő, és kiküszöböli ezt a hibát.

Hogyan háríthatom el a "Nem lehet elérni vagy csatlakozni a Power Platformhoz" hibát?

Annak érdekében, hogy a Power Platform-végpontok elérhetők és engedélyezhetők legyenek, tekintse meg a Power Platform URL-címeit és IP-címtartományait.