Ρύθμιση διαχειριζόμενης ταυτότητας Power Platform για προσθήκες ή πακέτα προσθηκών του Dataverse

Όταν χρησιμοποιείτε διαχειριζόμενη ταυτότητα Power Platform, οι προσθήκες dataverse ή τα πακέτα προσθηκών μπορούν να συνδεθούν σε Azure πόρους χωρίς τη διαχείριση διαπιστευτηρίων. Αυτό το άρθρο περιγράφει τη συνιστώμενη ρύθμιση (έκδοση 2 ), η οποία δημιουργεί τα διαπιστευτήρια εξωτερικής ταυτότητας (FIC) από έναν κατακερματιστή του πλήρους διακριτικού ονόματος (DN) του πιστοποιητικού.

Note

Χρησιμοποιήστε την έκδοση 2 διαχειριζόμενης ταυτότητας του Power Platform για όλες τις νέες και υπάρχουσες προσθήκες. Εάν διατηρείτε μια προσθήκη που εξακολουθεί να χρησιμοποιεί τη μορφή έκδοσης 1 (βάσει CN), ανατρέξτε στο θέμα Ρύθμιση διαχειριζόμενης ταυτότητας έκδοση 1. Για να μετακινήσετε μια υπάρχουσα προσθήκη στην έκδοση 2, ανατρέξτε στο θέμα Αναβάθμιση στην έκδοση 2.

Γιατί έκδοση 2

Η έκδοση 2 παράγει ένα αναγνωριστικό θέματος μόνο ASCII σταθερού μήκους, επομένως λειτουργεί με οποιοδήποτε όνομα πιστοποιητικού. Η έκδοση 1 αποτυγχάνει σε ορισμένα ονόματα πιστοποιητικών (CN):

  • Οι χαρακτήρες που δεν είναι ASCII στο CN (για παράδειγμα, τα τονισμένα γράμματα) → AADSTS70050: The Federated Managed Identity path is not properly formatted.
  • Κόμματα στο CN (για παράδειγμα, CN=Contoso, Inc.) → AADSTS700213: No matching federated identity record found.

Prerequisites

  • Μια Azure συνδρομή με πρόσβαση στην παροχή διαχειριζόμενης ταυτότητας (UAMI) ή εγγραφής εφαρμογής που έχει εκχωρηθεί από τον χρήστη.
  • Εργαλεία για προσθήκες ή πακέτα προσθηκών:
  • Ένα έγκυρο πιστοποιητικό για την υπογραφή της συναρμολόγησης προσθήκης.

Ρύθμιση διαχειριζόμενης ταυτότητας

  1. Δημιουργήστε μια νέα καταχώρηση εφαρμογής ή διαχειριζόμενη ταυτότητα που έχει εκχωρηθεί από τον χρήστη.
  2. Δημιουργήστε, υπογράψτε και καταχωρήστε την προσθήκη.
  3. Ρυθμίστε τις παραμέτρους των διαπιστευτηρίων εξωτερικής ταυτότητας.
  4. Δημιουργήστε την εγγραφή διαχειριζόμενης ταυτότητας στο Dataverse.
  5. Εκχώρηση πρόσβασης στον πόρο Azure.
  6. Επικυρώστε την ενοποίηση.

Βήμα 1: Δημιουργία καταχώρησης εφαρμογής ή διαχειριζόμενης ταυτότητας με εκχώρηση από τον χρήστη

Δημιουργήστε μια διαχειριζόμενη ταυτότητα ή μια εφαρμογή που έχει αντιστοιχιστεί στον χρήστη σε Microsoft Entra ID:

Note

Καταγραφή του αναγνωριστικού εφαρμογής (client) και του αναγνωριστικού μισθωτή , μπορείτε να τα χρησιμοποιήσετε σε επόμενα βήματα.

Βήμα 2: Δόμηση, υπογραφή και καταχώρηση της προσθήκης

  1. Δημιουργήστε μια προσθήκη Visual Studio. Χρησιμοποιήστε το αναγνωριστικό μισθωτή από το βήμα 1 και μια εμβέλεια όπως https://{OrgName}.crm*.dynamics.com/.default. Χρησιμοποιήστε την IManagedIdentityService για να ζητήσετε ένα διακριτικό:

    string AcquireToken(IEnumerable<string> scopes);
    
  2. Υπογράψτε την προσθήκη με το πιστοποιητικό σας.

    Πακέτο προσθήκης (NuGet):

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

    Εγκατάσταση πρόσθετου (SignTool):

    signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
    
  3. Καταχωρήστε την προσθήκη χρησιμοποιώντας το εργαλείο καταχώρησης προσθηκών.

Note

Χρησιμοποιήστε ένα πιστοποιητικό αυτόματης υπογραφής μόνο για ανάπτυξη ή δοκιμή. Μην χρησιμοποιείτε πιστοποιητικά αυτόματης υπογραφής στην παραγωγή. Για να δημιουργήσετε ένα, ανατρέξτε στο θέμα Δημιουργία πιστοποιητικού αυτόματης υπογραφής.

Βήμα 3: Ρύθμιση παραμέτρων των διαπιστευτηρίων εξωτερικής ταυτότητας

Στην πύλη Azure, ανοίξτε την εφαρμογή σας ή τη διαχειριζόμενη ταυτότητα (UAMI) που σας έχει εκχωρηθεί από τον χρήστη, μεταβείτε στην ενότητα Πιστοποιητικά & μυστικάΟμόσπονδα διαπιστευτήριαΠροσθέστε διαπιστευτήρια και επιλέξτε Άλλος εκδότης. Στη συνέχεια, πληκτρολογήστε:

  • Εκδότης — https://login.microsoftonline.com/{tenantID}/v2.0

  • Τύπος — Ρητό αναγνωριστικό θέματος

  • Αναγνωριστικό θέματος — χρησιμοποιήστε τη μορφή για τον τύπο πιστοποιητικού σας:

    • Αξιόπιστο πιστοποιητικό εκδότη (παραγωγή):

      /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}
      
    • Πιστοποιητικό αυτόματης υπογραφής (μόνο ανάπτυξη):

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

    Αναφορά τμήματος

    Τμήμα Περιγραφή
    eid1 Έκδοση μορφής ταυτότητας
    c/pub Κώδικας cloud για το δημόσιο cloud, το GCC και τον σταθμό πρώτης έκδοσης στο GCC
    t/{encodedTenantId} Αναγνωριστικό μισθωτή. Ανατρέξτε στο θέμα Λήψη του κωδικοποιημένου αναγνωριστικού μισθωτή
    a/qzXoWDkuqUa3l6zM5mM0Rw/ Αποκλειστικά για εσωτερική χρήση. Να μην τροποποιηθούν
    n/plugin Πρόσθετο στοιχείο
    e/{environmentId} Αναγνωριστικό περιβάλλοντος
    i/{issuerHash} s/{subjectHash} Κατακερματισμός SHA-256 Base64URL του πλήρους εκδότη/υποκειμένου DN. Δείτε Υπολογισμός του κατακερματισμού του εκδότη και του υποκειμένου
    h/{hash} SHA-256 του πιστοποιητικού (μόνο με αυτόματη υπογραφή)

Υπολογίστε τους κατακερματισμούς του εκδότη και του υποκειμένου

Λάβετε τον κατακερματικό κώδικα SHA-256 των συμβολοσειρών πλήρους εκδότη και υποκειμένου DN όπως εμφανίζονται στο πιστοποιητικό και κωδικοποιήστε κάθε μία ως Base64 που είναι ασφαλής για url. Λάβετε τις συμβολοσειρές DN με:

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

Υπολογίστε τις στάχτες (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"

Ή στη 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('=');
}

Το αποτέλεσμα είναι μια συμβολοσειρά 43 χαρακτήρων που περιέχει μόνο A-Z, a-z, 0-9, -και _.

Σημαντικό

Χρησιμοποιήστε την ακριβή συμβολοσειρά DN που χρησιμοποιεί ο χρόνος εκτέλεσης (το .NET X509Certificate2.Issuer και X509Certificate2.Subject τις ιδιότητες). Ένα DN με διαφορετική μορφοποίηση δεν θα ταιριάζει και θα αποτυγχάνει με το AADSTS700213.

Note

Για αναπτύξεις εκτός δημόσιου cloud, ορίστε τιμές για συγκεκριμένο cloud. Ανατρέξτε στο θέμα Εξειδικευμένα περιβάλλοντα Azure cloud.

Βήμα 4: Δημιουργία της διαχειριζόμενης εγγραφής ταυτότητας στο Dataverse

Στείλτε μια αίτηση HTTP POST χρησιμοποιώντας ένα πρόγραμμα-πελάτη REST. Για την έκδοση 2, ορίστε version την σε 2.

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

Στη συνέχεια, συνδέστε τη συγκρότηση προσθήκης (ή πακέτο) στην εγγραφή:

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

Για ένα πακέτο προσθήκης, χρησιμοποιήστε τη συνάρτηση pluginpackages(<<PluginPackageId>>) αντί για αυτό.

Βήμα 5: Εκχώρηση πρόσβασης στον πόρο Azure

Εκχωρήστε στην εφαρμογή ή στον χρήστη πρόσβαση διαχειριζόμενης ταυτότητας στον Azure πόρο που χρειάζεται, όπως Azure Key Vault.

Βήμα 6: Επικύρωση της ενοποίησης

Ενεργοποιήστε την προσθήκη και επιβεβαιώστε ότι αποκτά ένα διακριτικό και συμπληρώστε τον πόρο Azure χωρίς ξεχωριστά διαπιστευτήρια.

Αναβάθμιση στην έκδοση 2

Εάν έχετε μια προσθήκη στην έκδοση 0 ή την έκδοση 1, μπορείτε να την μετακινήσετε στην έκδοση 2 χωρίς να δημιουργήσετε εκ νέου ή να καταχωρήσετε εκ νέου την προσθήκη.

Επιλογή 1: Power Platform CLI

Note

Τα ρήματα διαχειριζόμενης ταυτότητας CLI δεν λειτουργούν σε λειτουργικά συστήματα που βασίζονται σε Linux ή με διαχειριζόμενη ταυτότητα (UAMI) που έχει ανατεθεί από τον χρήστη. Εάν η CLI δεν λειτουργεί για το πιστοποιητικό σας, χρησιμοποιήστε την Επιλογή 2: Μη αυτόματη.

  1. Εγκαταστήστε το Power Platform CLI έκδοση 2.8.1 ή νεότερη. Ανατρέξτε στο θέμα Εγκατάσταση Microsoft Power Platform CLI.
  2. Δημιουργία προφίλ ελέγχου ταυτότητας: pac auth create
  3. Ελέγξτε την τρέχουσα έκδοση: pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2
  4. Αναβάθμιση: pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm
  5. Ενεργοποιήστε την προσθήκη για επικύρωση.

Επιλογή 2: Μη αυτόματη

  1. Υπολογισμός του κατακερματισμού του εκδότη και του υποκειμένου έκδοσης 2. Δείτε Υπολογισμός του κατακερματισμού του εκδότη και του υποκειμένου.

  2. Προσθέστε ένα νέο FIC με τη μορφή αναγνωριστικού θέματος έκδοσης 2 (βήμα 3).

  3. Ενημερώστε τη διαχειριζόμενη καρτέλα ταυτότητας στην έκδοση 2:

    PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>)
    
    { "version": 2 }
    
  4. Ενεργοποιήστε την προσθήκη και επαληθεύστε ότι η απόκτηση διακριτικών είναι επιτυχής.

  5. Καταργήστε την παλιά έκδοση 1 FIC.

Note

Η έκδοση 0 είναι υπό απόσυρση. Η υποστήριξη CLI για τη δημιουργία της έκδοσης 2 FIC βρίσκεται σε εξέλιξη.

Αναφορά

Λήψη του κωδικοποιημένου αναγνωριστικού μισθωτή

Το κωδικοποιημένο αναγνωριστικό μισθωτή είναι το GUID μισθωτή που έχει μετατραπεί σε byte και έχει κωδικοποιηθεί ως Base64URL (όχι τυπική Base64):

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

Δημιουργία πιστοποιητικού αυτόματης υπογραφής

Μόνο για ανάπτυξη ή δοκιμή:

$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

Υπολογίστε το αυτοϋπογεγραμμένο {hash} (SHA-256 στο .cer· εξαγάγετέ το πρώτα από ένα .pfx, εάν χρειάζεται):

CertUtil -hashfile <CertificateFilePath> SHA256

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

Εξειδικευμένα περιβάλλοντα cloud Azure

Ορίστε ρητά τα Κοινό, URL εκδότη και πρόθημα θέματος κατά την ανάπτυξη εκτός του δημόσιου cloud, του GCC και του σταθμού πρώτης έκδοσης στο GCC.

** Νέφος Κοινό Διεύθυνση URL εκδότη Πρόθημα θέματος
GCC High και DoD api://AzureADTokenExchangeUSGov https://login.microsoftonline.us /eid1/c/usg
Mooncake (Κίνα) api://AzureADTokenExchangeChina https://login.partner.microsoftonline.cn /eid1/c/chn
Us National (USNAT) api://AzureADTokenExchangeUSNat https://login.microsoftonline.eaglex.ic.gov /eid1/c/uss
Us Secure (USSec) api://AzureADTokenExchangeUSSec https://login.microsoftonline.scloud /eid1/c/usn

Note

Η τιμή Κοινό έχει διάκριση πεζών-κεφαλαίων. Για το δημόσιο cloud, το GCC και τον σταθμό πρώτης κυκλοφορίας στο GCC, οι προεπιλογές είναι Κοινό api://AzureADTokenExchange, Εκδότης https://login.microsoftonline.com, πρόθεμα θέματος /eid1/c/pub.

Συνήθεις ερωτήσεις

Πώς μπορώ να επιλύσω AADSTS700213: Δεν βρέθηκε αντίστοιχο ομόσπονδο αρχείο ταυτότητας;

Το αναγνωριστικό θέματος που υπολογίζεται στον χρόνο εκτέλεσης δεν συμφωνεί με κανένα FIC στην εφαρμογή. Ελέγξτε ότι:

  1. Ρυθμίσατε τις παραμέτρους και αποθηκεύσατε το FIC.
  2. Ο εκδότης και το θέμα συμφωνούν με τη μορφή στο Βήμα 3. Μπορείτε επίσης να βρείτε την αναμενόμενη μορφή στη στοίβα σφαλμάτων.
  3. Η εγγραφή version είναι 2 και η FIC χρησιμοποιεί τη μορφή κατακερματικού μηνύματος έκδοσης 2.
  4. Ο κατακερματισμός υπολογίζεται από τη συμβολοσειρά DN του περιβάλλοντος χρόνου εκτέλεσης (X509Certificate2.Issuer / X509Certificate2.Subject).
  5. Ο εκδότης είναι https://login.microsoftonline.com/{tenantId}/v2.0 και το κοινό είναι api://AzureADTokenExchange (διάκριση πεζών/κεφαλαίων).

Πώς μπορώ να επιλύσω το σφάλμα AADSTS70050: Η διαδρομή της ομοσπονδιακής διαχειριζόμενης ταυτότητας δεν έχει σωστή μορφοποίηση;

Το αναγνωριστικό θέματος περιέχει χαρακτήρες που δεν αποδέχεται η υπηρεσία παροχής ταυτότητας , συνήθως μη ASCII χαρακτήρες στο πιστοποιητικό CN στην έκδοση 1. Η έκδοση 2 παράγει ένα αναγνωριστικό θέματος μόνο asCII και επιλύει αυτό το σφάλμα.

Πώς μπορώ να επιλύσω το σφάλμα "Δεν είναι δυνατή η πρόσβαση ή η σύνδεση στο Power Platform";

Για να βεβαιωθείτε ότι είναι δυνατή η πρόσβαση στα τελικά σημεία του Power Platform και η λίστα επιτρεπόμενων, ανατρέξτε στο θέμα Διευθύνσεις URL και περιοχές διευθύνσεων IP του Power Platform.