Power Platform 管理身份允許 Dataverse 的外掛或外掛套件與 Azure 資源連接,以支援無需憑證的管理身份。 本文協助您在 Power Platform 環境中設定受控識別。
先決條件
- 有權佈建使用者指派的受控識別 (UAMI) 或應用程式註冊的 Azure 訂閱。
- 外掛工具或外掛套件:
- 用於建置外掛程式的整合式開發環境 (IDE),例如 Visual Studio
- 外掛程式註冊工具
- SignTool.exe (簽署工具) ,用於對外掛程式集進行簽署
- Power Platform CLI
- 用於簽署外掛程式組件的有效憑證。
設定受控識別
要為 Dataverse 外掛或外掛套件設定 Power Platform 管理身份,請完成以下步驟。
- 建立新的應用程式註冊或使用者指派的受控識別。
- 設定聯合身分憑證。
- 建立並註冊 Dataverse 外掛或外掛套件。
務必組裝好外掛組件並登記外掛或外掛封裝。 - 在 Dataverse 中建立受控識別記錄。
- 將 Azure 資源的存取權授與應用程式或使用者指派的受控識別 (UAMI)。
- 驗證外掛程式整合。
建立新的應用程式註冊或使用者分配的受控識別
您可以根據下列案例,在 Microsoft Entra ID 中建立使用者指派的受控識別或應用程式。
- 如果你想讓應用程式身份與連接 Azure 資源(例如 Azure Key Vault)的外掛綁定,請使用 Application registration。 透過應用程式標識,您可以在存取 Azure 資源的外掛程式上套用 Azure 原則。
- 如果你想讓服務主體存取 Azure 資源,例如 Azure Key Vault,你可以配置 使用者指派的管理身份。
Note
務必記錄以下的ID,因為你在後續步驟中會使用它們。
- 應用程式 (用戶端) 識別碼
- 租用戶識別碼
設定聯合身分憑證
若要設定受控識別,請在上一節所建立的 Azure 入口網站中開啟使用者指派的受控識別或 Microsoft Entra ID 應用程式。
- 前往 Azure 入口網站。
- 瀏覽至 Microsoft Entra ID。
- 選取 應用程式註冊。
- 開啟您在設定受控識別中建立的應用程式。
- 導覽至憑證和密碼。
- 選取 [ 同盟認證 ] 索引標籤,然後選取 [ 新增認證]。
- 選擇簽發者作為其他簽發者。
- 輸入下列資訊:
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}
- 將 GUID 轉換為十六進位。
- 還原 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 外掛或外掛套件
建構外掛程式集
使用 Visual Studio 建立外掛程式。 建置外掛程式時,使用建立新應用程式註冊中的租用戶 ID 或使用者指派的受控識別和範圍作為組織 URL (例如
https://{OrgName}.crm*.dynamics.com/.default或更精細的範圍)。使用 IManagedIdentityService 並取得權杖方法來請求指定範圍的權杖。
方法簽名:
string AcquireToken(IEnumerable<string> scopes);
包裝與簽名
簽署外掛套件
如果你正在建立外掛套件,可以使用 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 中建立受控識別記錄
要在 Dataverse 中配置受管理身份記錄,請完成以下步驟。
透過使用 REST 用戶端(例如 Insomnia)發送 HTTP POST 請求來建立受管理身份。 請使用以下格式的網址與請求內容。
POST https://<<orgURL>>/api/data/v9.0/managedidentities請務必將 orgURL 替換為組織的 URL。
請確定承載中的 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 }透過發送 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>>)" }記得用你的值替換 orgURL、 PluginAssemblyId (或 PluginPackageId)和 ManagedIdentityGuid 。
向應用程式或使用者指派的受控識別授予對 Azure 資源的存取權限
如果您需要提供應用程式識別碼的存取權限來存取 Azure 資源 (例如 Azure Key Vault),請將存取應用程式或使用者指派的受控識別的權限授與該資源。
驗證外掛程式整合
驗證您的外掛程式是否可以安全地要求存取支援受控識別的 Azure 資源,從而無需單獨的憑證。
常見問題集 (FAQ)
如何解決此錯誤?
如果您收到下列錯誤:
收到錯誤 — 配置問題阻止了身份驗證。
AADSTS700213:找不到相符的同盟身分記錄
請完成下列步驟以解決問題:
確保FIC配置正確並保存。
請確認發行人/主題是否符合先前指定的格式。
您也可以在錯誤堆疊中找到預期的格式。
如何解決「無法連線或連線到 Power Platform」錯誤?
請參考 Power Platform 的 URL 與 IP 位址範圍 ,以確保 Power Platform 端點可被存取並列入允許名單。