Sediakan identiti terurus Power Platform untuk pemalam Dataverse atau pakej pemalam

Apabila anda menggunakan identiti terurus Power Platform, pemalam Dataverse atau pakej pemalam boleh menyambung ke sumber Azure tanpa mengurus kelayakan. Artikel ini menerangkan persediaan yang disyorkan (versi 2), yang membina kelayakan identiti bersekutu (FIC) daripada cincang Nama Terhormat (DN) penuh sijil.

Nota

Gunakan identiti terurus Power Platform versi 2 untuk semua pemalam baharu dan sedia ada. Jika anda mengekalkan pemalam yang masih menggunakan format versi 1 (berasaskan CN), lihat Sediakan identiti terurus versi 1. Untuk mengalihkan pemalam sedia ada kepada versi 2, lihat Naik taraf kepada versi 2.

Mengapa versi 2

Versi 2 menghasilkan pengecam subjek ASCII sahaja panjang tetap, jadi ia berfungsi dengan mana-mana nama sijil. Versi 1 gagal pada nama sijil tertentu (CN):

  • Aksara bukan ASCII dalam CN (contohnya, huruf beraksen) → AADSTS70050: The Federated Managed Identity path is not properly formatted.
  • Koma dalam CN (contohnya, CN=Contoso, Inc.) → AADSTS700213: No matching federated identity record found.

Prasyarat

  • Langganan Azure dengan capaian untuk memperuntukkan identiti terurus yang ditugaskan pengguna (UAMI) atau pendaftaran aplikasi.
  • Alat untuk pemalam atau pakej pemalam:
  • Sijil yang sah untuk menandatangani pemasangan pemalam.

Sediakan identiti terurus

  1. Cipta pendaftaran apl baharu atau identiti terurus yang diperuntukkan pengguna.
  2. Bina, tandatangan, dan daftarkan pemalam.
  3. Konfigurasikan kelayakan identiti bersekutu.
  4. Cipta rekod identiti terurus dalam Dataverse.
  5. Berikan capaian kepada sumber Azure.
  6. Sahkan penyepaduan.

Langkah 1: Cipta pendaftaran apl atau identiti terurus yang ditetapkan oleh pengguna

Cipta sama ada identiti terurus yang ditugaskan oleh pengguna atau aplikasi dalam Microsoft Entra ID:

Nota

Tangkap ID Aplikasi (klien) dan ID Penyewa — anda menggunakannya dalam langkah kemudian.

Langkah 2: Bina, tandatangani dan daftarkan pemalam

  1. Cipta pemalam dalam Visual Studio. Gunakan ID penyewa daripada langkah 1 dan skop seperti https://{OrgName}.crm*.dynamics.com/.default. Gunakan IManagedIdentityService untuk meminta token:

    string AcquireToken(IEnumerable<string> scopes);
    
  2. Tandatangani pemalam dengan sijil anda.

    Pakej pemalam (NuGet):

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

    Perhimpunan pemalam (SignTool):

    signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
    
  3. Daftarkan pemalam menggunakanalat pendaftaran pemalam.

Nota

Gunakan sijil yang ditandatangani sendiri hanya untuk pembangunan atau ujian. Jangan gunakan sijil yang ditandatangani sendiri dalam pengeluaran. Untuk menciptanya, lihat Jana sijil yang ditandatangani sendiri.

Langkah 3: Konfigurasikan kelayakan identiti bersekutu

Dalam portal Azure, buka aplikasi anda atau identiti terurus (UAMI) yang ditugaskan pengguna, pergi ke Sijil & rahsia Kelayakan bersekutuTambah kelayakan dan pilih Pengeluar lain. Kemudian masukkan:

  • Penerbit — https://login.microsoftonline.com/{tenantID}/v2.0

  • Jenis — Pengecam subjek eksplisit

  • Pengecam subjek — gunakan format untuk jenis sijil anda:

    • Sijil penerbit yang dipercayai (pengeluaran):

      /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}
      
    • Sijil yang ditandatangani sendiri (pembangunan sahaja):

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

    Rujukan segmen

    Segmen Perihalan
    eid1 Versi format identiti
    c/pub Kod awan untuk awan awam, GCC dan stesen keluaran pertama dalam GCC
    t/{encodedTenantId} ID Penyewa. Lihat Dapatkan ID penyewa yang dikodkan
    a/qzXoWDkuqUa3l6zM5mM0Rw/ Kegunaan dalaman sahaja. Jangan ubah suai
    n/plugin Komponen pemalam
    e/{environmentId} ID Persekitaran
    i/{issuerHash} s/{subjectHash} SHA-256 Base64URL hash bagi DN penerbit/subjek penuh. Lihat Mengira cincang pengeluar dan subjek
    h/{hash} SHA-256 sijil (ditandatangani sendiri sahaja)

Mengira hash penerbit dan subjek

Ambil cincang SHA-256 bagi penerbit penuh dan rentetan DN subjek apabila ia muncul pada sijil, dan kodkan setiap satu sebagai Base64 selamat URL. Dapatkan rentetan DN dengan:

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

Kira cincang (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"

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

Output ialah rentetan 43 aksara yang mengandungi hanya A-Z, a-z, 0-9, -, dan _.

Penting

Gunakan rentetan DN tepat yang digunakan oleh masa jalan (.NET X509Certificate2.Issuer dan X509Certificate2.Subject sifat). DN yang diformatkan berbeza tidak akan sepadan dan gagal dengan AADSTS700213.

Nota

Untuk penggunaan di luar awan awam, tetapkan nilai khusus awan. Lihat Persekitaran awan Azure khusus.

Langkah 4: Buat rekod identiti terurus dalam Dataverse

Hantar permintaan HTTP POST dengan menggunakan klien REST. Untuk versi 2, tetapkan version kepada 2.

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

Kemudian, ikat pemasangan pemalam (atau pakej) ke rekod:

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

Untuk pakej pemalam, gunakan pluginpackages(<<PluginPackageId>>) sebaliknya.

Langkah 5: Berikan capaian kepada sumber Azure

Berikan aplikasi atau akses identiti terurus yang ditugaskan pengguna kepada sumber Azure yang diperlukannya, seperti Azure Key Vault.

Langkah 6: Sahkan penyepaduan

Mencetuskan pemalam dan sahkan ia memperoleh token dan mencapai sumber Azure tanpa kelayakan berasingan.

Naik taraf kepada versi 2

Jika anda mempunyai pemalam pada versi 0 atau versi 1, anda boleh memindahkannya ke versi 2 tanpa membina semula atau mendaftarkan semula pemalam.

Pilihan 1: CLI Platform Kuasa

Nota

Kata kerja identiti terurus CLI tidak berfungsi pada sistem pengendalian berasaskan Linux atau dengan identiti terurus (UAMI) yang diberikan pengguna. Jika CLI tidak berfungsi untuk sijil anda, gunakan Pilihan 2: Manual.

  1. Pasang Power Platform CLI versi 2.8.1 atau lebih baru. Lihat Pasang Microsoft Power Platform CLI.
  2. Cipta profil pengesahan: pac auth create
  3. Semak versi semasa: pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2
  4. Menaik taraf: pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm
  5. Picu pemalam untuk mengesahkan.

Pilihan 2: Manual

  1. Kira penerbit versi 2 dan cincang subjek. Lihat Mengira cincang penerbit dan subjek.

  2. Tambah FIC baharu dengan format pengecam subjek versi 2 (Langkah 3).

  3. Kemas kini rekod identiti terurus kepada versi 2:

    PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>)
    
    { "version": 2 }
    
  4. Mencetuskan pemalam dan sahkan pemerolehan token berjaya.

  5. Alih keluar FIC versi lama 1.

Nota

Versi 0 ditamatkan. Sokongan CLI untuk menjana FIC versi 2 sedang dijalankan.

Rujukan

Dapatkan ID penyewa yang dikodkan

ID penyewa yang dikodkan ialah GUID penyewa yang ditukar kepada bait dan dikodkan sebagai Base64URL (bukan Base64 standard):

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

Jana sijil yang ditandatangani sendiri

Untuk pembangunan atau ujian sahaja:

$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

Kira yang ditandatangani {hash} sendiri (SHA-256 di atas ; .cereksport dari yang .pfx pertama jika perlu):

CertUtil -hashfile <CertificateFilePath> SHA256

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

Persekitaran awan Azure khusus

Tetapkan awalan Khalayak,URL Pengeluar dan Subjek secara eksplisit apabila menggunakan di luar awan awam, GCC dan stesen keluaran pertama dalam GCC.

Awan Hadirin URL Pengeluar Awalan subjek
GCC Tinggi & DoD api://AzureADTokenExchangeUSGov https://login.microsoftonline.us /eid1/c/usg
Kuih Bulan (China) api://AzureADTokenExchangeChina https://login.partner.microsoftonline.cn /eid1/c/chn
Kebangsaan AS (USNAT) api://AzureADTokenExchangeUSNat https://login.microsoftonline.eaglex.ic.gov /eid1/c/uss
Selamat AS (USSec) api://AzureADTokenExchangeUSSec https://login.microsoftonline.scloud /eid1/c/usn

Nota

Nilai Khalayak adalah sensitif huruf besar. Untuk awan awam, GCC dan stesen keluaran pertama dalam GCC, lalai ialah Khalayak api://AzureADTokenExchange, Pengeluar https://login.microsoftonline.com, awalan /eid1/c/pubsubjek .

Soalan lazim

Bagaimanakah cara saya menyelesaikan AADSTS700213: Tiada rekod identiti bersekutu yang sepadan ditemui?

Pengecam subjek yang dikira pada masa jalan tidak sepadan dengan mana-mana FIC pada apl. Semak bahawa:

  1. Anda mengkonfigurasi dan menyimpan FIC.
  2. Penerbit dan subjek sepadan dengan format dalam Langkah 3. Anda juga boleh mencari format yang dijangkakan dalam timbunan ralat.
  3. Rekodnya version ialah 2 dan FIC menggunakan format cincang versi 2.
  4. Cincang dikira daripada rentetan DN masa jalan (X509Certificate2.Issuer / X509Certificate2.Subject).
  5. Penerbit adalah https://login.microsoftonline.com/{tenantId}/v2.0 dan penonton adalah api://AzureADTokenExchange (sensitif huruf besar).

Bagaimanakah cara saya menyelesaikan AADSTS70050: Laluan Identiti Terurus Bersekutu tidak diformatkan dengan betul?

Pengecam subjek mengandungi aksara yang tidak diterima oleh pembekal identiti — selalunya aksara bukan ASCII dalam sijil CN di bawah versi 1. Versi 2 menghasilkan pengecam subjek ASCII sahaja dan menyelesaikan ralat ini.

Bagaimanakah cara saya menyelesaikan ralat "Tidak dapat mencapai atau menyambung ke Power Platform"?

Untuk memastikan titik akhir Power Platform boleh dicapai dan disenaraikan kebenaran, lihat URL Power Platform dan julat alamat IP.