Konfiguratu Power Platform-en kudeatutako identitatea Dataverse-ren pluginen edo plug-in-en paketeen

Power Platform kudeatutako identitatea erabiltzen duzunean, Dataverse-ko plug-in-ek edo plug-in paketeek Azure baliabideetara konekta daitezke kredentzialak kudeatu gabe. Artikulu honek gomendatutako (2. bertsioa) konfigurazioa deskribatzen du, non federated identity credential (FIC) eraikitzen den ziurtagiriaren izen bereizgarri osoaren (DN) hash batetik.

Oharra

Erabili Power Platform kudeatutako identitatearen 2. bertsioa plug-in berri eta dauden guztientzat. Plug-in bat mantentzen baduzu oraindik 1. bertsioa (CN oinarritua) formatua erabiltzen duena, ikus Ezarri kudeatutako identitatea 1. bertsioa. Plug-in bat 2. bertsiora mugitzeko, ikusi Eguneratu 2. bertsiora.

Zergatik 2. bertsioa

2. bertsioak luzera finkoko, ASCII soilik duen subjektu identifikatzaile bat sortzen du, beraz, edozein ziurtagiri izenarekin funtzionatzen du. 1. bertsioak huts egiten du zenbait ziurtagiri izenetan (CN):

  • CNko ASCII ez diren karaktereak (adibidez, letra azentuak) → AADSTS70050: The Federated Managed Identity path is not properly formatted.
  • CNko komak (adibidez, CN=Contoso, Inc.) → AADSTS700213: No matching federated identity record found.

Aurrebaldintzak

  • Azure harpidetza, erabiltzaileak esleitutako kudeatutako identitatea (UAMI) edo aplikazioen erregistroa hornitzeko sarbidearekin.
  • Plugin edo plug-in paketeen tresnak:
  • Pluginaren multzoa sinatzeko baliozko ziurtagiria.

Konfiguratu kudeatutako identitatea

  1. Sortu aplikazio-erregistro berri bat edo erabiltzaileak esleitutako kudeatutako identitate bat.
  2. Eraiki, sinatu eta erregistratu plug-ina.
  3. Federated Identity kredentziala konfiguratu.
  4. Sortu kudeatutako identitate erregistroa Dataverse-n.
  5. Azure baliabideari sarbidea eman.
  6. Egiaztatu integrazioa.

1. urratsa: Sortu aplikazioaren erregistroa edo erabiltzaileak esleitutako kudeatutako identitatea

Sortu erabiltzaileak esleitutako kudeatutako identitate bat edo aplikazio bat Microsoft Entra ID-n:

Oharra

Harrapatu Aplikazioaren (bezeroaren) IDa eta Alokairu IDa — hurrengo urratsetan erabiltzen dituzu.

2. urratsa: eraiki, sinatu eta erregistratu plug-ina

  1. Sortu plug-in bat Visual Studio-n. Erabili 1. urratseko tenant ID-a eta . bezalako https://{OrgName}.crm*.dynamics.com/.defaultesparru bat. Erabili IManagedIdentityService token bat eskatzeko:

    string AcquireToken(IEnumerable<string> scopes);
    
  2. Sakatu plug-ina zure ziurtagiriarekin.

    Plug-in paketea (NuGet):

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

    Plug-in muntaketa (SignTool):

    signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
    
  3. Erregistratu plug-inaplug-in erregistro tresna erabiliz.

Oharra

Erabili auto-sinatutako ziurtagiri bat garapen edo probetarako bakarrik. Ez erabili auto-sinatutako ziurtagiriak ekoizpenean. Bat sortzeko, ikusi Sortu auto-sinatutako ziurtagiri bat.

3. urratsa: Federated identity credential konfiguratu

Azure atarian, ireki zure aplikazioa edo erabiltzaileak esleitutako kudeatutako identitatea (UAMI), joan Ziurtagiriak eta>Sekretuak Federatutakokredentzialak >Gehitu, eta hautatu Beste emisorea. Ondoren, sartu:

  • Emititzaileahttps://login.microsoftonline.com/{tenantID}/v2.0

  • MotaSubjektu identifikatzaile esplizitua

  • Subjektu identifikatzailea — erabili zure ziurtagiri motaren formatua:

    • Fidagarria den jaulkitzaile ziurtagiria (ekoizpena):

      /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}
      
    • Auto-sinatutako ziurtagiria (garapena soilik):

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

    Segmentuaren erreferentzia

    Segmentua Deskribapenak
    eid1 Identitate-formatuaren bertsioa
    c/pub Hodei kodea hodei publikoaren, GCCrako eta GCCko lehen argitalpen estaziorako
    t/{encodedTenantId} Alokairudunaren IDa. Ikusi Lortu kodetutako alokairu IDa
    a/qzXoWDkuqUa3l6zM5mM0Rw/ Barne-erabilera soilik. Ez aldatu
    n/plugin Pluginaren osagaia
    e/{environmentId} Ingurunearen IDa
    i/{issuerHash} s/{subjectHash} SHA-256 Base64URL hash-a emisore/subjektu osoaren DN-a. Ikusi : Kalkulatu jaulkitzailea eta subjektu hash-ak
    h/{hash} Ziurtagiriaren SHA-256 (berak bakarrik sinatutako pertsonaia)

Kalkulatu jaulkitzaile eta subjektu hash-ak

Hartu SHA-256 hash-a jaulkitzaile osoaren eta subjektu DN kateak ziurtagirian agertzen diren moduan, eta bakoitza URL seguru Base64 gisa kodetu. Lortu DN kateak:

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

Kalkulatu hasheak (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"

Edo C#-n:

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

Irteera 43 karaktereko kate bat da, , A-Za-z, 0-9, eta -bakarrik _dituena.

Garrantzitsua da

Erabili runtime-ak erabiltzen duen DN kate zehatza (.NET X509Certificate2.Issuer eta X509Certificate2.Subject propietateak). DN formatu desberdin batek ez du bat etorriko eta huts egiten du AADSTS700213.

Oharra

Hodei publikotik kanpoko inplementazioetarako, ezarri hodeiko balio espezifikoak. Ikus Azure hodei ingurune espezializatuak.

4. urratsa: Sortu identitate kudeatuaren erregistroa Dataverse-n

HTTP POST eskaera bat bidali REST bezero bat erabiliz. 2. bertsiorako, ezarri version2.

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

Ondoren, lotu plug-in muntaketa (edo paketea) erregistroari:

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

Plug-in pakete baterako, erabili pluginpackages(<<PluginPackageId>>) ordez.

5. urratsa: Azure baliabiderako sarbidea eman

Eman aplikazioari edo erabiltzaileak esleitutako kudeatutako identitateari behar duen Azure baliabidera, hala nola Azure Key Vault-era, sarbidea.

6. urratsa: Integrazioa balioztatu

Piztu plug-ina eta baieztatu token bat eskuratzen duela eta Azure baliabidean kredentzial bereizirik gabe iristen dela.

2. bertsiora eguneratzea

0. edo 1. bertsioan plug-in bat baduzu, 2. bertsiora pasa dezakezu plug-ina berreraiki edo berriro erregistratu gabe.

1. Aukera: Power Platform CLI

Oharra

CLI kudeatutako identitate aditzek ez dute funtzionatzen Linux oinarritutako sistema eragileetan edo erabiltzaileak esleitutako kudeatutako identitatearekin (UAMI). CLI ez badago zure ziurtagiriarentzat, erabili 2. aukera: Eskuzkoa.

  1. Power Platform CLI 2.8.1 bertsioa edo ondorengoa instalatu. Ikusi Microsoft Power Platform CLI instalatzea.
  2. Sortu autentifikazio profila: pac auth create
  3. Egungo bertsioa begiratu: pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2
  4. Eguneratzea: pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm
  5. Plug-ina piztu balioztatzeko.

2. Aukera: Eskuz

  1. Kalkulatu 2. bertsioko igorle eta subjektu hash-ak. Ikusi: Kalkulatu jaulkitzailearen eta subjektu hash-ak.

  2. Gehitu FIC berri bat 2. bertsioko gai identifikatzailearen formatuarekin (3. urratsa).

  3. Kudeatutako identitate erregistroa 2. bertsiora eguneratu:

    PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>)
    
    { "version": 2 }
    
  4. Plug-ina abiarazi eta token eskuratzea arrakastatsua dela egiaztatu.

  5. Kendu 1 bertsio zaharra FIC.

Oharra

0. bertsioa zaharkituta. 2. bertsioko FIC sortzeko CLI laguntza martxan.

Erreferentzia

Lortu kodetutako alokairu-IDa

Kodetutako alokairu IDa GUID alokairuduna da, byte bihurtua eta Base64URL gisa kodetua (ez Base64 estandarra):

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

Sortu auto-sinatutako ziurtagiri bat

Garapen edo probetarako bakarrik:

$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

Kalkulatu auto-sinatua {hash} (SHA-256 gainean .cer; behar izanez gero lehenengotik esportatu .pfx ):

CertUtil -hashfile <CertificateFilePath> SHA256

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

Azure hodeiko ingurune espezializatuak

Ezarri Audientzia, Emailearen URL-a eta Subjektu aurrizkia argi eta garbi hodei publikoaren kanpoan, GCCn eta lehen argitalpen estazioan inplementatzean.

Hodeia Jarraitzaileak Jaulkitzailearen URLa Subjektuaren aurrizkia
GCC Goiak eta DoD api://AzureADTokenExchangeUSGov https://login.microsoftonline.us /eid1/c/usg
Mooncake (Txina) api://AzureADTokenExchangeChina https://login.partner.microsoftonline.cn /eid1/c/chn
Estatu Batuetako Nazionalitatea (USNAT) api://AzureADTokenExchangeUSNat https://login.microsoftonline.eaglex.ic.gov /eid1/c/uss
AEBetako Segurua (USSec) api://AzureADTokenExchangeUSSec https://login.microsoftonline.scloud /eid1/c/usn

Oharra

Audientziaren balioa kasualki sentikorra da. Hodei publikorako, GCC eta GCCko lehen argitalpen estaziorako, lehenetsiak Audientzia api://AzureADTokenExchange, Emisorea https://login.microsoftonline.cometa Subjektu aurrizkia /eid1/c/pubdira.

Maiz egiten diren galderak

Nola konpondu dezaket AADSTS700213: Ez da identifikazio federatuaren erregistro bat aurkitu?

Exekuzioan kalkulatutako subjektu identifikatzaileak ez du aplikazioko FIC-arekin bat egiten. Egiaztatu hori:

  1. FICa konfiguratu eta gorde duzu.
  2. Emisorea eta gaia 3. urratseko formatuarekin bat datoz. Errore-pilan espero den formatua ere aurki dezakezu.
  3. Erregistroa version da 2 eta FICak 2. bertsioko hash formatua erabiltzen du.
  4. Hash-a exekuzioko DN katetik kalkulatzen da (X509Certificate2.Issuer / X509Certificate2.Subject).
  5. Emititzailea da https://login.microsoftonline.com/{tenantId}/v2.0 eta audientzia api://AzureADTokenExchange (kasu-diferentzia) da.

Nola konpondu dezaket AADSTS70050: Federated Managed Identity bidea ez behar bezala formateatuta?

Subjektu identifikatzaileak identitate hornitzaileak onartzen ez dituen karaktereak ditu — gehienetan 1. bertsioan CN ziurtagiriaren ez-ASCII karaktereak. 2. bertsioak ASCII soilik subjektu identifikatzaile bat sortzen du eta errore hau konpontzen du.

Nola konpondu dezaket "Ezin da Power Platform-era iritsi edo hara konektatu" errorea?

Power Platform-en muturreko puntuak iristeko eta baimenduta daudela ziurtatzeko, ikusi Power Platform URLak eta IP helbide tarteak.