Power Platformin hallitsemien käyttäjätietojen määrittäminen Dataverse-laajennuksia tai laajennuspaketteja varten

Kun käytät Power Platformin hallittuja käyttäjätietoja, Dataverse-laajennukset tai laajennukset voivat muodostaa yhteyden Azure resursseihin ilman tunnistetietojen hallintaa. Tässä artikkelissa kuvataan suositeltu määritys (versio 2 ), joka luo yhdistettyjen käyttäjätietojen tunnistetiedot (FIC) varmenteen täydellisen Distinguished Name (DN) -nimen hajautuksen perusteella.

Muistio

Käytä Power Platformin hallitseman käyttäjätiedon versiota 2 kaikissa uusissa ja olemassa olevissa laajennuksille. Jos ylläpidät laajennusta, joka käyttää yhä version 1 (CN) muotoa, katso Hallitun käyttäjätietojen version 1 määrittäminen. Jos haluat siirtää olemassa olevan laajennuksen versioon 2, katso Päivitä versioon 2.

Miksi versio 2

Versio 2 tuottaa kiinteän pituisen, VAIN ASCII -aihetunnisteen, joten se toimii minkä tahansa varmenteen nimen kanssa. Versio 1 ei toimi tietyillä varmenteiden nimillä:

  • CN:n muut kuin ASCII-merkit (esimerkiksi aksenttimerkit) → AADSTS70050: The Federated Managed Identity path is not properly formatted.
  • Pilkut CN:ssä (esimerkiksi CN=Contoso, Inc.) → AADSTS700213: No matching federated identity record found.

Edellytykset

  • Azure tilaus, jossa on käyttöoikeus valmistelukäyttäjän määrittämään hallittuun käyttäjätietoon (UAMI) tai sovelluksen rekisteröintiin.
  • Laajennukset- ja laajennuspakettien työkalut:
  • Kelvollinen varmenne liitännäisen koontiversion allekirjoittamiseen.

Hallittujen käyttäjätietojen määrittäminen

  1. Luo uusi sovellusrekisteröinti tai käyttäjän määrittämät hallitut käyttäjätiedot.
  2. Luo, allekirjoita ja rekisteröi laajennus.
  3. Määritä yhdistettyjen käyttäjätietojen tunnistetiedot.
  4. Luo hallittu käyttäjätietotietue Dataversessa.
  5. Myönnä käyttöoikeus Azure resurssiin.
  6. Vahvista integrointi.

Vaihe 1: Luo sovelluksen rekisteröinti tai käyttäjän määrittämät hallitut käyttäjätiedot

Luo joko käyttäjän määrittämät hallitut käyttäjätiedot tai sovellus Microsoft Entra ID:

Muistio

Sieppaa Sovelluksen (asiakkaan) tunnus ja vuokraajatunnus – voit käyttää niitä myöhemissä vaiheissa.

Vaihe 2: Laajennuksen luominen, allekirjoittaminen ja rekisteröiminen

  1. Luo laajennus Visual Studio. Käytä vuokraajan tunnusta vaiheesta 1 ja sen kaltaisesta https://{OrgName}.crm*.dynamics.com/.defaultlaajuudesta. Käytä IManagedIdentityService-palvelua tunnuksen pyytämiseen:

    string AcquireToken(IEnumerable<string> scopes);
    
  2. Allekirjoita laajennus varmenteellasi.

    Laajennuspaketti (NuGet):

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

    Laajennuskokoonpano (SignTool):

    signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
    
  3. Rekisteröi laajennus laajennuksenrekisteröintityökalun avulla.

Muistio

Käytä itse allekirjoitettua varmennetta vain kehittämiseen tai testaukseen. Älä käytä itse allekirjoitettuja varmenteita tuotannossa. Jos haluat luoda varmenteen, katso Itse allekirjoitetun varmenteen luominen.

Vaihe 3: Yhdistettyjen käyttäjätietojen tunnistetietojen määrittäminen

Avaa Azure-portaalissa sovelluksesi tai käyttäjän määrittämät hallitut käyttäjätiedot (UAMI), siirry kohtaan Varmenteet ja salasanat>Liitetty tunnistetiedot>Lisää tunnistetiedot ja valitse Muu myöntäjä. Kirjoita sitten:

  • Myöntäjähttps://login.microsoftonline.com/{tenantID}/v2.0

  • TyyppiEksplisiittinen aihetunniste

  • Varmenteen aiheen tunniste — käytä varmenteesi tyypin mukaista muotoa:

    • Luotetun myöntäjän varmenne (tuotanto):

      /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}
      
    • Itse allekirjoitettu varmenne (vain kehityskäyttöön):

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

    Segmenttiviittaus

    Segmentti Description
    eid1 Tunnusmuodon versio
    c/pub Julkisen pilvipalvelun, GCC:n ja GCC:n ensimmäisen julkaisuaseman pilvikoodi
    t/{encodedTenantId} Vuokraajatunnus. Katso Koodatun vuokraajan tunnuksen hankkiminen
    a/qzXoWDkuqUa3l6zM5mM0Rw/ Vain sisäiseen käyttöön. Älä muokkaa
    n/plugin Laajennusosa
    e/{environmentId} Ympäristön tunnus
    i/{issuerHash} s/{subjectHash} TÄYDELLISEN liikkeeseenlaskijan/aiheen DN:n SHA-256 Base64URL -hajautusarvo. Katso Liikkeeseenlaskijan ja subjektin tiivisteiden laskeminen
    h/{hash} Varmenteen SHA-256 (vain itse allekirjoitettu)

Laske liikkeeseenlaskijan ja kohteen tiivisteet

Ota koko myöntäjän ja aiheen DN-merkkijonojen SHA-256-hajautusarvo sellaisina kuin ne näkyvät varmenteessa, ja koodaa ne kaikki URL-turvallisiksi Base64-base64-tiedostoiksi. Hae DN-merkkijonot käyttäen:

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

Laske tiivisteet (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"

Tai C#:ssä:

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

Tuloksena on 43-merkkinen merkkijono, joka sisältää vain A-Zmerkkijonot , a-z, 0-9, -ja _.

Tärkeää

Käytä runtime-funktion käyttämää tarkkaa DN-merkkijonoa (.NET X509Certificate2.Issuer ja X509Certificate2.Subject ominaisuuksia). Eri tavalla muotoiltu DN ei vastaa ja epäonnistuu :n kanssa AADSTS700213.

Muistio

Määritä julkisten pilvipalvelujen ulkopuolisissa käyttöönotoissa pilvipalvelukohtaiset arvot. Katso Erityiset Azure pilviympäristöt.

Vaihe 4: Luo hallittu käyttäjätietotietue Dataversessa

HTTP POST -pyynnön lähettäminen REST-asiakasohjelman avulla. Jos kyseessä on versio 2, määritä arvoksi version2.

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

Sido seuraavaksi laajennuskokoonpano (tai paketti) tietueeseen:

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

Käytä sen sijaan laajennuspakettia pluginpackages(<<PluginPackageId>>) .

Vaihe 5: myönnä käyttöoikeus Azure resurssiin

Myönnä sovellukselle tai käyttäjälle määritetty hallittujen käyttäjätietojen käyttöoikeus sen tarvitsemaan Azure resurssiin, kuten Azure Key Vault.

Vaihe 6: Integroinnin vahvistaminen

Käynnistä laajennus ja varmista, että se hankkii tunnuksen ja saavuttaa Azure resurssin ilman erillisiä tunnistetietoja.

Päivitä versioon 2

Jos sinulla on laajennusversio 0 tai versio 1, voit siirtää sen versioon 2 ilman laajennuksen uudelleenmuodostamista tai uudelleenrekisteröimistä.

Vaihtoehto 1: Power Platform CLI

Muistio

Komentorivikäyttöliittymän hallitut käyttäjätietojen verbit eivät toimi Linux-pohjaisissa käyttöjärjestelmissä tai käyttäjän määrittämissä hallituissa käyttäjätiedoissa (UAMI). Jos CLI ei toimi varmenteellesi, käytä Vaihtoehto 2: Manuaalinen.

  1. Asenna Power Platform CLI -versio 2.8.1 tai uudempi. Katso Komentorivikäyttöliittymän Microsoft Power Platform asentaminen.
  2. Luo todennusprofiili: pac auth create
  3. Tarkista nykyinen versio: pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2
  4. Päivitys: pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm
  5. Käynnistä laajennus vahvistettavaksi.

Vaihtoehto 2: Manuaalinen

  1. Laske version 2:n myöntäjän ja subjektin tiivisteet. Katso Liikkeeseenlaskijan ja subjektin tiivisteiden laskeminen.

  2. Lisää uusi FIC,jolla on version 2 aiheen tunnistemuoto (vaihe 3).

  3. Päivitä hallittu käyttäjätietotietue versioon 2:

    PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>)
    
    { "version": 2 }
    
  4. Käynnistä laajennus ja varmista, että tunnuksen hankinta onnistuu.

  5. Poista vanha versio 1 FIC.

Muistio

Versio 0 on vanhentunut. CLI-tuki FIC-version 2 luomiselle on käynnissä.

Lähdeaineistot

Hanki koodatun vuokraajan tunnus

Koodattu vuokraajan tunnus on vuokraajan GUID-tunnus, joka on muunnettu tavuiksi ja koodattu Base64URL-muotoon (ei vakiomuotoinen Base64):

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

Luo itse allekirjoitettu varmenne

Vain kehitystä tai testausta varten:

$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

Laske itseallekirjoitettu {hash} (SHA-256 kohteesta .cer; vie se tarvittaessa ensin kohteesta .pfx):

CertUtil -hashfile <CertificateFilePath> SHA256

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

Erityiset Azure-pilviympäristöt

Määritä Kohderyhmä-, Myöntäjän URL-osoite- ja Aihe-etuliite eksplisiittisesti, kun otat käyttöön julkisen pilvipalvelun, GCC:n ja GCC:n ensimmäisen julkaisuaseman.

Pilvi Yleisö Myöntäjän URL-osoite Aiheen etuliite
GCC High ja DoD api://AzureADTokenExchangeUSGov https://login.microsoftonline.us /eid1/c/usg
Mooncake (Kiina) api://AzureADTokenExchangeChina https://login.partner.microsoftonline.cn /eid1/c/chn
Yhdysvaltain kansallinen (USNAT) api://AzureADTokenExchangeUSNat https://login.microsoftonline.eaglex.ic.gov /eid1/c/uss
US Secure (USSec) api://AzureADTokenExchangeUSSec https://login.microsoftonline.scloud /eid1/c/usn

Muistio

Audience-arvossa erotellaan isot ja pienet kirjaimet. Julkisen pilvipalvelun, GCC:n ja GCC:n ensimmäisen julkaisuaseman oletusasemia ovat Audience api://AzureADTokenExchange, Issuer https://login.microsoftonline.com, Subject-etuliite /eid1/c/pub.

Usein kysyttyjä kysymyksiä

Miten voin ratkaista AADSTS700213: Vastaavaa yhdistettyä käyttäjätietotietuetta ei löytynyt?

Suorituspalvelussa laskettu aihetunniste ei vastaa mitään FIC:ä sovelluksessa. Tarkista, että:

  1. Määritit ja tallensit FIC:n.
  2. Myöntäjä ja aihe vastaavat vaiheen 3 muotoa. Löydät myös odotetun muodon virhepinosta.
  3. Tietue version on 2 ja FIC käyttää version 2 hajautusarvomuotoa.
  4. Hajautusarvo lasketaan runtimen DN-merkkijonosta (X509Certificate2.Issuer / X509Certificate2.Subject).
  5. Liikkeeseenlaskija on https://login.microsoftonline.com/{tenantId}/v2.0 ja yleisö on api://AzureADTokenExchange (kirjainkoko merkitsee).

Miten voin ratkaista AADSTS70050: Yhdistettyjen hallittujen käyttäjätietojen polkua ei ole muotoiltu oikein?

Aiheen tunnus sisältää merkkejä, jota käyttäjätietopalvelu ei hyväksy – useimmiten ei-ASCII-merkkejä varmenteessa CN:ssä versiossa 1. Versio 2 tuottaa VAIN ASCII -aihetunnisteen ja ratkaisee tämän virheen.

Miten voin ratkaista "Yhteyden muodostaminen Power Platformiin ei onnistu" -virheen?

Jos haluat varmistaa, että Power Platform -päätepisteet ovat tavoitettavissa ja sallittujen luettelossa, katso Power Platformin URL-osoitteet ja IP-osoitealueet.