Seadista Power Platformi hallatav identiteet Dataverse'i pistikprogrammide või plug-in pakettide jaoks

Kui kasutad Power Platformi hallatavat identiteeti, saavad Dataverse'i pluginad või plug-in paketid ühenduda Azure ressurssidega ilma mandaate haldamata. See artikkel kirjeldab soovitatud (versioon 2) seadistust, mis ehitab federated identity credential'i (FIC) sertifikaadi täieliku Distinguished Name (DN) räsi põhjal.

Märkus.

Kasuta Power Platformi hallatud identiteedi versiooni 2 kõigi uute ja olemasolevate pluginate jaoks. Kui hoiad pluginat, mis kasutab endiselt versiooni 1 (CN-põhist) formaati, vaata Seadista hallatud identiteet versioon 1. Olemasoleva plugina viimiseks versiooni 2 vaata Uuenda versioonile 2.

Miks versioon 2

Versioon 2 toodab fikseeritud pikkusega, ainult ASCII-põhise subjekti identifikaatori, nii et see töötab iga sertifikaadi nimega. Versioon 1 ebaõnnestub teatud sertifikaadinimede (CN) puhul:

  • CN-i mitte-ASCII märgid (näiteks aktsendiga tähed) → AADSTS70050: The Federated Managed Identity path is not properly formatted.
  • Komad CN-is (näiteks CN=Contoso, Inc.) → . AADSTS700213: No matching federated identity record found

Eeltingimused

Hallatava identiteedi häälestamine

  1. Looge uus rakenduse registreerimine või kasutaja määratud hallatav identiteet.
  2. Ehita, allkirjasta ja registreeri plugin.
  3. Seadista federated identity credential.
  4. Loo hallatud identiteedi kirje Dataverse'is.
  5. Anna ligipääs Azure ressursile.
  6. Kinnita integratsioon.

1. samm: Loo rakenduse registreerimine või kasutaja määratud hallatud identiteet

Loo kas kasutaja määratud hallatav identiteet või rakendus Microsoft Entra ID-s:

Märkus.

Salvesta rakenduse (kliendi) ID ja üürniku ID — neid kasutad hilisemates sammudes.

2. samm: Loo, allkirjasta ja registreeri plugin

  1. Loo plugin Visual Studio's. Kasuta üürniku ID-d esimesest etapist ja ulatust nagu https://{OrgName}.crm*.dynamics.com/.default. Kasuta IManagedIdentityService'i , et taotleda tokenit:

    string AcquireToken(IEnumerable<string> scopes);
    
  2. Allkirjasta pistikprogramm oma sertifikaadiga.

    Plug-in pakett (NuGet):

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

    Plug-in komplekt (SignTool):

    signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
    
  3. Registreeri pistikprogrammplugina registreerimistööriista abil.

Märkus.

Kasuta iseallkirjastatud sertifikaati ainult arenduseks või testimiseks. Ära kasuta tootmises iseallkirjastatud sertifikaate. Selle loomiseks vaata Genereeri iseallkirjastatud sertifikaat.

3. samm: Seadista föderatiivse identiteedi mandaat

Azure'i portaalis ava oma rakendus või kasutaja määratud hallatud identiteet (UAMI), mine Certificates & SecretsFederated credentialsAdd credential ja vali Other issuer. Seejärel sisestame:

  • Väljastaja — https://login.microsoftonline.com/{tenantID}/v2.0

  • Tüüp — Selge subjekti identifikaator

  • Subjekti identifikaator — kasuta oma sertifikaadi tüübi vormingut:

    • Usaldusväärse väljastaja sertifikaat (tootmine):

      /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}
      
    • Iseallkirjastatud sertifikaat (ainult arendustegevus):

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

    Lõigu viide

    Segment Kirjeldus
    eid1 Identiteediformaadi versioon
    c/pub Pilvekood avaliku pilve, GCC ja esimese väljalaskejaama jaoks GCC-s
    t/{encodedTenantId} Üürniku ID. Vaata Hangi kodeeritud üürniku ID
    a/qzXoWDkuqUa3l6zM5mM0Rw/ Ainult sisekasutus. Ära muuda
    n/plugin Plug-in komponent
    e/{environmentId} Keskkonna ID
    i/{issuerHash} s/{subjectHash} SHA-256 Base64URL räsi kogu väljastaja/subjekti DN-st. Vaata : arvuta emiteerija ja subjekträsid
    h/{hash} Sertifikaadi SHA-256 (ainult iseallkirjastatud)

Arvuta emiteerija ja subjekt-räsid

Võta kogu väljastaja SHA-256 räsi ja alluvad DN stringid, nagu need sertifikaadil ilmnevad, ning kodeeri igaüks URL-turvalise Base64-na. Hangi DN stringid järgmiste numbritega:

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

Arvuta räsid (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"

Või C#-s:

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äljundiks on 43-tähemärgiline string, mis sisaldab ainult A-Z, a-z, 0-9, -, ja _.

Oluline

Kasuta täpselt seda DN-stringi, mida käitusaeg kasutab (.NET X509Certificate2.Issuer ja X509Certificate2.Subject omadused). Teistsuguse vormindatud DN ei sobi ja ebaõnnestub .AADSTS700213

Märkus.

Avaliku pilve väliste juurutuste puhul sea pilvepõhised väärtused. Vaata spetsialiseeritud Azure'i pilvekeskkonnad.

4. samm: Loo hallatud identiteedi kirje Dataverse'is

Saada HTTP POST päring REST-kliendi abil. Versiooni 2 jaoks seatud version .2

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

Seejärel seo plugina komplekt (või pakett) kirjega:

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

Plug-in paketi jaoks kasuta pluginpackages(<<PluginPackageId>>) selle asemel.

5. samm: Anna ligipääs Azure'i ressursile

Anna rakendusele või kasutaja määratud hallatavale identiteedile ligipääs Azure'i ressursile, mida ta vajab, näiteks Azure Key Vault.

6. samm: Integratsiooni valideerimine

Käivita plugin ja veendu, et see omandab tokeni ning jõuab Azure'i ressursini ilma eraldi mandaadita.

Uuendamine versioonile 2

Kui sul on plugin versioonis 0 või versioonis 1, saad selle viia versiooni 2 ilma pluginat uuesti üles ehitamata või uuesti registreerimata.

Variant 1: Power Platform CLI

Märkus.

CLI-hallatavad identiteeditegusõnad ei tööta Linuxi-põhistel operatsioonisüsteemidel ega kasutaja määratud hallatava identiteedi (UAMI) puhul. Kui CLI ei tööta sinu sertifikaadi jaoks, kasuta varianti 2: Manuaal.

  1. Paigalda Power Platform CLI versioon 2.8.1 või uuem. Vaata Install Microsoft Power Platform CLI.
  2. Loo autentimisprofiil: pac auth create
  3. Vaata praegust versiooni: pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2
  4. Uuendus: pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm
  5. Käivita pistikprogramm, et valideerida.

Variant 2: Manuaalne

  1. Arvuta versiooni 2 väljastaja ja subjektne räsi. Vaata : arvuta väljastaja ja subjektne räsi.

  2. Lisa uus FIC versiooni 2 teemaidentifikaatori formaadiga (3. samm).

  3. Uuenda hallatud identiteedi kirje versioonile 2:

    PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>)
    
    { "version": 2 }
    
  4. Käivita pistikprogramm ja kontrolli, et tokeni hankimine õnnestub.

  5. Eemalda vana versiooni 1 FIC.

Märkus.

Versioon 0 on aegunud. CLI tugi versiooni 2 FIC genereerimiseks on käimas.

Viide

Hangi kodeeritud üürniku ID

Kodeeritud üürniku ID on üürniku GUID, mis on baitideks teisendatud ja kodeeritud kui Base64URL (mitte tavaline Base64):

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

Genereeri iseallkirjastatud sertifikaat

Ainult arenduseks või testimiseks:

$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

Arvuta iseallkirjastatud {hash} (SHA-256 üle .cer; vajadusel ekspordi esimesest .pfx ):

CertUtil -hashfile <CertificateFilePath> SHA256

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

Spetsialiseeritud Azure pilvekeskkonnad

Sea Audience, Issuer URL ja Subject prefiks selgelt, kui juurutad väljaspool avalikku pilve, GCC-d ja esimest väljalaskejaama GCC-s.

Pilv Sihtrühm Väljaandja URL Subjekti eesliide
GCC High ja DoD api://AzureADTokenExchangeUSGov https://login.microsoftonline.us /eid1/c/usg
Kuukook (Hiina) api://AzureADTokenExchangeChina https://login.partner.microsoftonline.cn /eid1/c/chn
USA kodanik (USNAT) api://AzureADTokenExchangeUSNat https://login.microsoftonline.eaglex.ic.gov /eid1/c/uss
USA turvaline (USSec) api://AzureADTokenExchangeUSSec https://login.microsoftonline.scloud /eid1/c/usn

Märkus.

Publiku väärtus on täibilitlik. Avaliku pilve, GCC ja GCC esimese väljalaskejaama puhul on vaikimisi väärtused Audience api://AzureADTokenExchange, Issuer https://login.microsoftonline.com, Subject prefiks /eid1/c/pub.

Korduma kippuvad küsimused (KKK)

Kuidas lahendada AADSTS700213: Föderatsiooni identiteedikirjet ei leitud?

Käitusajal arvutatud subjekti identifikaator ei ühti ühegi rakenduse FIC-iga. Kontrollige järgmist.

  1. Sa seadistasid ja salvestasid FIC-i.
  2. Väljastaja ja subjekt vastavad 3 . sammu formaadile. Eeldatava vormingu leiate ka veavirnast.
  3. Kirje version2 ja FIC kasutab versiooni 2 räsi formaati.
  4. Räsi arvutatakse jooksva aja DN-stringist (X509Certificate2.Issuer / X509Certificate2.Subject).
  5. Väljastaja on https://login.microsoftonline.com/{tenantId}/v2.0 ja sihtrühm api://AzureADTokenExchange on (tähetundlik).

Kuidas lahendada AADSTS70050: Federated Managed Identity tee ei ole korrektselt vormindatud?

Subjekti identifikaator sisaldab märke, mida identiteediteenuse pakkuja ei aktsepteeri — enamasti mitte-ASCII märgid sertifikaadi CN-s versiooni 1 all. Versioon 2 toodab ainult ASCII-põhise subjekti identifikaatori ja lahendab selle vea.

Kuidas lahendada tõrge "Power Platformiga ei saa ühendust võtta ega sellega ühendust luua"?

Selleks, et tagada Power Platformi lõpp-punktide kättesaadavus ja lubatud nimekirjas, vaata Power Platformi URL-e ja IP-aadresside vahemikke.