Nastavte spravovanú identitu Power Platform pre Dataverse plug-iny alebo balíky plug-in

Keď používate spravovanú identitu Power Platform, Dataverse plug-iny alebo balíky plug-in môžu byť pripojené k Azure zdrojom bez správy prihlasovacích údajov. Tento článok popisuje odporúčané ( verzia 2) nastavenie, ktoré vytvára federované identifikačné prihlasovacie údaje (FIC) z hashu plného Distinguished Name (DN) certifikátu.

Poznámka

Použite Power Platform managed identity verziu 2 pre všetky nové aj existujúce plug-iny. Ak udržiavate plug-in, ktorý stále používa formát verzie 1 (založený na CN), pozrite si Nastaviť spravovanú identitu verzie 1. Ak chcete presunúť existujúci plugin na verziu 2, pozrite si Upgrade na verziu 2.

Prečo verzia 2

Verzia 2 vytvára identifikátor subjektu s pevnou dĺžkou, iba ASCII, takže funguje s akýmkoľvek názvom certifikátu. Verzia 1 zlyháva na niektorých názvoch certifikátov (CN):

  • Ne-ASCII znaky v CN (napríklad prízvučné písmená) → AADSTS70050: The Federated Managed Identity path is not properly formatted.
  • Čiarky v CN (napríklad CN=Contoso, Inc.) → AADSTS700213: No matching federated identity record found.

Požiadavky

Nastavenie spravovanej identity

  1. Vytvorte novú registráciu aplikácie alebo spravovanú identitu priradenú používateľom.
  2. Postavte, podpíšte a zaregistrujte plug-in.
  3. Nakonfigurujte federované identifikačné prihlasovacie údaje.
  4. Vytvorte spravovaný identitný záznam v Dataverse.
  5. Udeliť prístup k Azure zdroju.
  6. Overte integráciu.

Krok 1: Vytvorte registráciu aplikácie alebo spravovanú identitu priradenú používateľom

Vytvorte buď spravovanú identitu priradenú používateľom, alebo aplikáciu v Microsoft Entra ID:

Poznámka

Zachyťte ID aplikácie (klienta) a ID nájomcu — použijete ich v neskorších krokoch.

Krok 2: Zostavte, podpíšte a zaregistrujte plug-in

  1. Vytvorte si plugin vo Visual Studio. Použite tenant ID z kroku 1 a rozsah ako https://{OrgName}.crm*.dynamics.com/.default. Použite IManagedIdentityService na požiadanie o token:

    string AcquireToken(IEnumerable<string> scopes);
    
  2. Podpíšte plug-in svojím certifikátom.

    Balík plug-in (NuGet):

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

    Zostava plug-in (SignTool):

    signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
    
  3. Zaregistrujte plug-in pomocou nástroja na registráciu plug-inov.

Poznámka

Používajte samopodpísaný certifikát len na vývoj alebo testovanie. Nepoužívajte samopodpísané certifikáty v produkcii. Na vytvorenie si pozrite Vygenerovať samopodpísaný certifikát.

Krok 3: Nastavte federované identifikačné prihlasovacie údaje

V portáli Azure otvorte svoju aplikáciu alebo používateľom priradenú spravovanú identitu (UAMI), prejdite do Certifikáty & tajomstvá,federované prihlasovacie údaje,Pridajte prihlasovacie údaje a vyberte Iný vydavateľ. Potom zadajte:

  • Vydavateľhttps://login.microsoftonline.com/{tenantID}/v2.0

  • TypExplicitný identifikátor subjektu

  • Identifikátor predmetu — použite formát pre typ vášho certifikátu:

    • Certifikát dôveryhodného vydavateľa (produkcia):

      /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}
      
    • Certifikát s vlastným podpisom (len vývoj):

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

    Odkaz na segment

    Segment Description
    eid1 Verzia formátu identity
    c/pub Cloudový kód pre verejný cloud, GCC a prvú vydaciu stanicu v GCC
    t/{encodedTenantId} Identifikácia nájomníka. Pozri Získanie zakódovaného identifikátora nájomcu
    a/qzXoWDkuqUa3l6zM5mM0Rw/ Iba interné použitie. Neupravuj
    n/plugin Komponent plug-in
    e/{environmentId} ID prostredia
    i/{issuerHash} s/{subjectHash} SHA-256 Base64URL hash celého DN vydavateľa/subjektu. Pozri Vypočítaj hashe vydavateľa a subjektu
    h/{hash} SHA-256 certifikátu (len s vlastným podpisom)

Vypočítajte hashe emitenta a subjektu

Vezmite SHA-256 hash celého DN reťazca vydavateľa a subjektu, ako sa objavujú na certifikáte, a zakódujte každý ako URL bezpečný Base64. Získajte DN reťazce s:

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

Vypočítajte hashe (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"

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

Výstupom je 43-znakový reťazec obsahujúci iba A-Z, a-z, 0-9, -, a ._

Dôležité

Použite presne ten DN reťazec, ktorý runtime používa (.NET X509Certificate2.Issuer a X509Certificate2.Subject vlastnosti). Inak formátovaný DN sa nezhoduje a zlyhá s AADSTS700213.

Poznámka

Pri nasadeniach mimo verejného cloudu nastavte hodnoty špecifické pre cloud. Pozri Špecializované Azure cloudové prostredia.

Krok 4: Vytvorte spravovaný záznam identity v Dataverse

Pošlite HTTP POST požiadavku pomocou REST klienta. Pre verziu 2 nastavte version na 2.

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

Potom pripojme plug-in zostavu (alebo balenie) k záznamu:

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

Pre balík plug-in použite pluginpackages(<<PluginPackageId>>) namiesto toho.

Krok 5: Udeliť prístup k zdroju Azure

Udeľte aplikácii alebo používateľom priradenej spravovanej identite prístup k Azure zdroju, ktorý potrebuje, napríklad Azure Key Vault.

Krok 6: Overte integráciu

Spustite plugin a overte, že získa token a dostane sa k Azure zdroju bez samostatných prihlasovacích údajov.

Aktualizácia na verziu 2

Ak máte plugin vo verzii 0 alebo 1, môžete ho presunúť na verziu 2 bez toho, aby ste museli plug-in znovu zostavovať alebo registrovať.

Možnosť 1: CLI Power Platform

Poznámka

CLI spravované identitné slovesá nefungujú na operačných systémoch založených na Linuxe ani s používateľom priradenou spravovanou identitou (UAMI). Ak CLI nefunguje pre váš certifikát, použite možnosť 2: Manuálne.

  1. Nainštalujte Power Platform CLI verziu 2.8.1 alebo novšiu. Pozri Inštalácia Microsoft Power Platform CLI.
  2. Vytvorte autentifikačný profil: pac auth create
  3. Skontrolujte aktuálnu verziu: pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2
  4. Vylepšenie: pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm
  5. Spustite plug-in na overenie.

Možnosť 2: Manuál

  1. Vypočítajte hashy vydavateľa a subjektu verzie 2. Pozri Vypočítaj hashe vydavateľa a subjektu.

  2. Pridajte nový FIC s formátom identifikátora subjektu verzie 2 (Krok 3).

  3. Aktualizujte spravovaný záznam identity na verziu 2:

    PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>)
    
    { "version": 2 }
    
  4. Spustiť plug-in a overiť, či získanie tokenu bolo úspešné.

  5. Odstráňte starú verziu 1 FIC.

Poznámka

Verzia 0 je zastaraná. Podpora CLI pre generovanie FIC verzie 2 je v procese.

Referencia

Získajte zakódované ID nájomcu

Zakódované ID tenanta je GUID tenanta prevedené na bajty a zakódované ako Base64URL (nie štandardný Base64):

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

Vygenerujte samopodpísaný certifikát

Len na vývoj alebo testovanie:

$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

Vypočítajte samopodpísané {hash} (SHA-256 cez ; .cerexportujte z prvého písmena .pfx , ak je to potrebné):

CertUtil -hashfile <CertificateFilePath> SHA256

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

Špecializované cloudové prostredia Azure

Pri nasadzovaní mimo verejného cloudu, GCC a prvej vydanej stanice v GCC nastavte explicitne predponu Audience,Issuer URL a Subject prefix .

Cloud Publikum URL adresa vydavateľa Predpona predmetu
GCC High & DoD api://AzureADTokenExchangeUSGov https://login.microsoftonline.us /eid1/c/usg
Mooncake (Čína) api://AzureADTokenExchangeChina https://login.partner.microsoftonline.cn /eid1/c/chn
Štátny príslušník USA (USNAT) api://AzureADTokenExchangeUSNat https://login.microsoftonline.eaglex.ic.gov /eid1/c/uss
Zabezpečené v USA (USSec) api://AzureADTokenExchangeUSSec https://login.microsoftonline.scloud /eid1/c/usn

Poznámka

Hodnota pre publikum závisí od veľkých písmen. Pre verejný cloud, GCC a stanicu prvého vydania v GCC sú predvolené hodnoty Publikum api://AzureADTokenExchange, Vydavateľ, https://login.microsoftonline.comPrefix /eid1/c/pubsubjektu.

Často kladené otázky (FAQ)

Ako vyriešim AADSTS700213: Nenašiel sa žiadny zhodný federovaný identifikačný záznam?

Identifikátor subjektu vypočítaný za behu nezodpovedá žiadnemu FIC v aplikácii. Skontrolujte, či:

  1. Nastavili ste a uložili FIC.
  2. Vydavateľ a subjekt zodpovedajú formátu v kroku 3. Očakávaný formát nájdete aj v zásobníku chýb.
  3. Záznam version je 2 a FIC používa hash formát verzie 2.
  4. Hash sa vypočíta z reťazca DN v runtime ().X509Certificate2.Issuer / X509Certificate2.Subject
  5. Vydavateľ je a https://login.microsoftonline.com/{tenantId}/v2.0 publikum api://AzureADTokenExchange je (citlivé na veľké písmená).

Ako vyriešim AADSTS70050: Cesta Federated Managed Identity nie je správne naformátovaná?

Identifikátor subjektu obsahuje znaky, ktoré poskytovateľ identity neakceptuje — najčastejšie ne-ASCII znaky v certifikáte CN pod verziou 1. Verzia 2 vytvorí identifikátor subjektu iba v ASCII a túto chybu odstráni.

Ako vyriešim chybu "Nie je možné sa pripojiť k Power Platform alebo sa k nej pripojiť"?

Aby ste zabezpečili, že koncové body Power Platform sú dostupné a povolené, pozrite si Power Platform URL adresy a rozsahy IP adries.