共用方式為


為 Dataverse 外掛或外掛套件設定 Power Platform 管理身份

Power Platform 管理身份允許 Dataverse 的外掛或外掛套件與 Azure 資源連接,以支援無需憑證的管理身份。 本文協助您在 Power Platform 環境中設定受控識別。

先決條件

  • 有權佈建使用者指派的受控識別 (UAMI) 或應用程式註冊的 Azure 訂閱。
  • 外掛工具或外掛套件:
  • 用於簽署外掛程式組件的有效憑證。

設定受控識別

要為 Dataverse 外掛或外掛套件設定 Power Platform 管理身份,請完成以下步驟。

  1. 建立新的應用程式註冊或使用者指派的受控識別。
  2. 設定聯合身分憑證。
  3. 建立並註冊 Dataverse 外掛或外掛套件。
    務必組裝好外掛組件並登記外掛或外掛封裝。
  4. 在 Dataverse 中建立受控識別記錄。
  5. 將 Azure 資源的存取權授與應用程式或使用者指派的受控識別 (UAMI)。
  6. 驗證外掛程式整合。

建立新的應用程式註冊或使用者分配的受控識別

您可以根據下列案例,在 Microsoft Entra ID 中建立使用者指派的受控識別或應用程式。

  • 如果你想讓應用程式身份與連接 Azure 資源(例如 Azure Key Vault)的外掛綁定,請使用 Application registration。 透過應用程式標識,您可以在存取 Azure 資源的外掛程式上套用 Azure 原則。
  • 如果你想讓服務主體存取 Azure 資源,例如 Azure Key Vault,你可以配置 使用者指派的管理身份

Note

務必記錄以下的ID,因為你在後續步驟中會使用它們。

  • 應用程式 (用戶端) 識別碼
  • 租用戶識別碼

設定聯合身分憑證

若要設定受控識別,請在上一節所建立的 Azure 入口網站中開啟使用者指派的受控識別或 Microsoft Entra ID 應用程式。

  1. 前往 Azure 入口網站
  2. 瀏覽至 Microsoft Entra ID
  3. 選取 應用程式註冊
  4. 開啟您在設定受控識別中建立的應用程式。
  5. 導覽至憑證和密碼
  6. 選取 [ 同盟認證 ] 索引標籤,然後選取 [ 新增認證]。
  7. 選擇簽發者作為其他簽發者
  8. 輸入下列資訊:

Issuer

使用租用戶的 v2.0 簽發者:

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

Example

https://login.microsoftonline.com/5f8a1a9f-2e1a-415f-b10c-84c3736a21b9/v2.0

類型

選擇 Explicit subject identifier (明確主體識別碼)。

主題識別碼

選擇符合您憑證類型的格式:

  • 自我簽署憑證 (僅限開發):

    /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/h/{hash}
    
  • 信任的簽發者憑證 (建議用於生產):

    /eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuer}/s/{certificateSubject}
    

區段參考

區段 Description
eid1 身份格式版本
C/pub 用於公有雲、政府社群雲(GCC)以及 GCC 首個發佈階段的雲端程式碼。
t/{encodedTenantId} 租用戶識別碼
a/qzXoWDkuqUa3l6zM5mM0Rw/ 僅供內部使用。 不要修改。
n/插件 外掛元件
e/{environmentId} 環境識別碼
h/{雜湊} 憑證 SHA-256(僅限自簽)
i/{發行者}
s/{certificateSubject}
受託發行人資料

產生自簽憑證

每個外掛必須有可驗證的身份,而簽署憑證則是外掛的唯一指紋。 以下程式碼是一個範例 PowerShell 片段,可以用來產生開發或測試場景中的自簽憑證。 作為參考,你可以參考 範例3

 $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

Note

編碼 {encodedTenantId}

  1. GUID 轉換為十六進位
  2. 還原 Hex → Base64URL (而非標準 Base64)。

自簽名哈希

  • .cer上計算 SHA-256。 如果您有 .pfx,請先匯出 .cer
    CertUtil -hashfile <CertificateFilePath> SHA256
    
    $cert = Get-PfxCertificate -FilePath "path	o\your.pfx"
    $cert.RawData | Set-Content -Encoding Byte -Path "extracted.cer"
    

特製化 Azure 雲端環境

在公用雲端、GCC 以及 GCC 中第一個發行站台之外進行部署時,明確設定對象簽發者 URL主旨前置詞

觀眾 簽發者網址 主題前綴
GCC High 和 DoD api://AzureADTokenExchangeUSGov https://login.microsoftonline.us /eid1/c/usg
月餅(中國) api://AzureADTokenExchangeChina https://login.partner.microsoftonline.cn /eid1/c/chn
美國國民 (USNAT) api://AzureADTokenExchangeUSNat https://login.microsoftonline.eaglex.ic.gov /eid1/c/uss
美國安全 (USSec) api://AzureADTokenExchangeUSSec https://login.microsoftonline.scloud /eid1/c/usn

Note

Audience 的值區分大小寫,且必須完全相符。
對於公有雲、GCC 和 GCC 中的第一個發行站 (以及其他未列出的雲端),預設值為:
受眾 api://AzureADTokenExchange, 發行者 https://login.microsoftonline.com, 主旨前綴 /eid1/c/pub

建立並註冊 Dataverse 外掛或外掛套件

建構外掛程式集

包裝與簽名

簽署外掛套件

如果你正在建立外掛套件,可以使用 NuGet Sign CLI 從 .nuspec 或 .csproj 檔案產生套件。 產生套件後,請用你的證書簽名。

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

簽署外掛套件組件

如果你註冊外掛程式(組件),請使用 SignTool.exe (簽署工具)以憑證簽署 DLL。

signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll

您也可以選擇性地添加時間戳記,提供符合 RFC 3161 標準的時間戳伺服器的網址。

Note

僅用於開發或測試目的,請使用自簽憑證。 不要在生產環境中使用自簽憑證。

註冊外掛程式

在 Dataverse 中建立受控識別記錄

要在 Dataverse 中配置受管理身份記錄,請完成以下步驟。

  1. 透過使用 REST 用戶端(例如 Insomnia)發送 HTTP POST 請求來建立受管理身份。 請使用以下格式的網址與請求內容。

    POST https://<<orgURL>>/api/data/v9.0/managedidentities
    

    請務必將 orgURL 替換為組織的 URL。

  2. 請確定承載中的 credentialsource 設為 2 ,針對環境特定案例, subjectscope 設為 1 ,而承載中的 version 設為 1。

    範例有效載荷

    {
      "applicationid": "<<appId>>", //Application Id, or ClientId, or User Managed Identity
      "managedidentityid": "<<anyGuid>>",
      "credentialsource": 2, // Managed client
      "subjectscope": 1, //Environment Scope
      "tenantid": "<<tenantId>>", //Entra Tenant Id
      "version": 1
    }
    
  3. 透過發送 HTTP PATCH 請求,更新您的外掛套件或外掛組合記錄,將其與步驟 1 中建立的管理身份關聯。

    外掛程式組件

    PATCH https://<<orgURL>>/api/data/v9.0/pluginassemblies(<<PluginAssemblyId>>)
    

    外掛式封裝

    PATCH https://<<orgURL>>/api/data/v9.0/pluginpackages(<<PluginPackageId>>)
    

    範例有效載荷

    {
      "managedidentityid@odata.bind": "/managedidentities(<<ManagedIdentityGuid>>)"
    }
    

    記得用你的值替換 orgURLPluginAssemblyId (或 PluginPackageId)和 ManagedIdentityGuid

向應用程式或使用者指派的受控識別授予對 Azure 資源的存取權限

如果您需要提供應用程式識別碼的存取權限來存取 Azure 資源 (例如 Azure Key Vault),請將存取應用程式或使用者指派的受控識別的權限授與該資源。

驗證外掛程式整合

驗證您的外掛程式是否可以安全地要求存取支援受控識別的 Azure 資源,從而無需單獨的憑證。

常見問題集 (FAQ)

如何解決此錯誤?

如果您收到下列錯誤:
收到錯誤 — 配置問題阻止了身份驗證。
AADSTS700213:找不到相符的同盟身分記錄

請完成下列步驟以解決問題:

  1. 確保FIC配置正確並保存。

  2. 請確認發行人/主題是否符合先前指定的格式。

    您也可以在錯誤堆疊中找到預期的格式。

如何解決「無法連線或連線到 Power Platform」錯誤?

請參考 Power Platform 的 URL 與 IP 位址範圍 ,以確保 Power Platform 端點可被存取並列入允許名單。