共用方式為


針對 Azure Resource Manager 的工作負載身份識別服務連接進行故障排除

取得協助偵錯工作負載身分識別服務連線的常見問題。 您也可以瞭解如何視需要手動建立服務連線。

疑難排解檢查清單

使用以下檢查清單來解決工作負載身分識別服務連線問題的疑難:

  • 檢閱管線工作,以確保它們支援工作負載身分識別。
  • 確認租戶的工作負載身分識別聯盟已啟用。
  • 請檢查簽發者 URL 和同盟主體以確保其正確性。

下列各節說明問題以及如何解決這些問題。

檢閱管線工作

並非所有管線工作都支援工作負載身份識別。 具體而言,只有任務上的 Azure Resource Manager 服務連線屬性會使用工作負載身分識別同盟。 下表列出 Azure DevOps 包含的任務的工作負載身分識別同盟支援。 若為從市集安裝的任務,請聯絡延伸項目發行者以獲得支援。

任務 工作負載身份驗證聯盟支援
AutomatedAnalysis@0 Y
AzureAppServiceManage@0 Y
AzureAppServiceSettings@1 Y
AzureCLI@1 Y
AzureCLI@2 Y
AzureCloudPowerShellDeployment@1 使用AzureCloudPowerShellDeployment@2
AzureCloudPowerShellDeployment@2 Y
AzureContainerApps@0 Y
AzureContainerApps@1 Y
AzureFileCopy@1 使用AzureFileCopy@6
AzureFileCopy@2 使用AzureFileCopy@6
AzureFileCopy@3 使用AzureFileCopy@6
AzureFileCopy@4 使用AzureFileCopy@6
AzureFileCopy@5 使用AzureFileCopy@6
AzureFileCopy@6 Y
AzureFunctionApp@1 Y
AzureFunctionApp@2 Y
AzureFunctionAppContainer@1 Y
AzureFunctionOnKubernetes@0 使用AzureFunctionOnKubernetes@1
AzureFunctionOnKubernetes@1 Y
AzureIoTEdge@2 Y
AzureKeyVault@1 Y
AzureKeyVault@2 Y
AzureMonitor@0 使用AzureMonitor@1
AzureMonitor@1 Y
AzureMysqlDeployment@1 Y
AzureNLBManagement@1
AzurePolicyCheckGate@0 Y
AzurePowerShell@2 Y
AzurePowerShell@3 Y
AzurePowerShell@4 Y
AzurePowerShell@5 Y
AzureResourceGroupDeployment@2 Y
AzureResourceManagerTemplateDeployment@3 Y
AzureRmWebAppDeployment@3 Y
AzureRmWebAppDeployment@4 Y
AzureSpringCloud@0 Y
AzureVmssDeployment@0 Y
AzureWebApp@1 Y
AzureWebAppContainer@1 Y
ContainerBuild@0 Y
ContainerStructureTest@0 Y
Docker@0 Y
Docker@1 Azure 服務連線:Y
Docker 登錄服務連線:N
Docker@2 Y
DockerCompose@0 Y
DockerCompose@1 Y
DotNetCoreCLI@2 Y
HelmDeploy@0 Azure 服務連線:Y
HelmDeploy@1 Azure 服務連線:Y
InvokeRESTAPI@1 Y
JavaToolInstaller@0 Y
JenkinsDownloadArtifacts@1 Y
Kubernetes@0 使用Kubernetes@1
Kubernetes@1 Y
KubernetesManifest@0 使用KubernetesManifest@1
KubernetesManifest@1 Y
Maven@4 Y
Notation@0 Y
PackerBuild@0 使用PackerBuild@1
PackerBuild@1 Y
PublishToAzureServiceBus@1 使用 PublishToAzureServiceBus@2 並透過 Azure 服務連線
PublishToAzureServiceBus@2 Y
ServiceFabricComposeDeploy@0
ServiceFabricDeploy@1
SqlAzureDacpacDeployment@1 Y
VSTest@3 Y

確認工作負載身分識別聯盟處於啟用狀態

如果您看到錯誤訊息 AADSTS700223AADSTS700238,則在您的 Microsoft Entra 租使用者中已停用工作負載身分識別聯盟。

驗證是否沒有會封鎖同盟認證的任何 Microsoft Entra 原則。

檢查簽發者 URL 是否正確

如果您看到訊息指出 找不到相符的同盟身分識別記錄,則簽發者 URL 或同盟主體不相符。 正確的簽發者 URL 開頭為 https://vstoken.dev.azure.com

您可以透過編輯並儲存服務連線來更新簽發者 URL。 如果 Azure DevOps 並未建立身分識別,則必須手動更新簽發者 URL。 在 Azure 身分識別中,簽發者 URL 會自動更新。

常見問題

下一節會識別常見問題,並描述原因和解決方式。

我不具備在 Microsoft Entra 租用戶中建立服務主體的權限

如果不具備正確的權限,就無法使用 Azure DevOps 服務連線組態工具。 如果您不具備可以建立服務主體的權限,或者使用了不同於 Azure DevOps 使用者的 Microsoft Entra 租用戶,則您的權限等級不足以使用此工具。

必須具備在 Microsoft Entra ID 中建立應用程式註冊的權限,或具備適當的角色 (例如應用程式開發人員)。

若要解決問題,您有兩個選項:

錯誤訊息

下表列出了可能產生這些錯誤訊息的常見問題:

訊息 可能的問題
無法要求憑證:取得 ?audience=api://AzureADTokenExchange: unsupported protocol scheme 此任務不支援工作負載身份聯邦身份認證。
找不到身分識別 任務不支援工作負載身分識別聯邦。
無法擷取 Azure 的存取令牌 該任務不支援工作負載身分識別聯盟。
AADSTS700016:找不到標識符為 '****' 的應用程式 用於服務連線的身分識別已不存在、可能已從服務連線中移除或設定不正確。 如果您使用預先建立的身分識別手動設定服務連線,請確定 appID/clientId 已正確設定 。
AADSTS7000215:提供的客戶端密碼無效。 您使用的服務連線其憑證已經過期。 將服務連線轉換為工作負載身分識別同盟 ,並以同盟認證取代過期的秘密。
AADSTS700024:用戶端宣告不在有效的時間範圍內 如果錯誤發生在大約 1 小時後,請改為使用 工作負載身分識別聯盟和受控識別 的服務連線。 受控識別令牌的 存留期約為24小時
如果錯誤發生在 1 小時前,但在 10 分鐘之後,請移動命令,以隱含方式要求存取令牌,例如將 Azure 記憶體存取至腳本的開頭。 存取令牌將會被快取以供後續命令使用。
AADSTS70021:找不到與提供的聲明相符的聯邦身分識別記錄。 聲明發行者:https://app.vstoken.visualstudio.com 未建立同盟認證,或簽發者 URL 不正確。 正確的簽發者 URL 格式 https://vstoken.dev.azure.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX為 。 您可以透過編輯並儲存服務連線來修正簽發者 URL。 如果 Azure DevOps 未建立您的身分識別,您必須手動更新簽發者。 如果您使用 REST API,您可以在服務連線的編輯對話框中,或在回應中(在授權參數下)找到正確的簽發者。
AADSTS70021:找不到與提供的宣告相符的同盟身分識別記錄。 斷言發行者:https://vstoken.dev.azure.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX。 斷言主題: sc://<org>/<project>/<service-connection>. 簽發者 URL 或聯盟主體不一致。 Azure DevOps 組織或專案已重新命名,或手動建立的服務連線已重新命名,而不會更新身分識別上的同盟主旨。
AADSTS700211:找不到提供的聲明簽發者的相符同盟身份記錄 未建立同盟認證,或簽發者 URL 不正確。
AADSTS700213:找不到與提供的宣告主體相符的聯邦身分識別記錄 未建立聯邦憑證,或主體不正確。
AADSTS700223 工作負載身分識別同盟在 Microsoft Entra 租使用者上受到限制或停用。 在此案例中,可能會改用同盟的受控識別。 如需更多訊息,請參閱使用受控識別的工作負載身分識別
AADSTS70025:用戶端應用程式未設定同盟身分識別認證 請確定已在應用程式註冊或受控識別上設定同盟認證。
Microsoft Entra 拒絕 Azure DevOps 所發出的令牌,錯誤碼 AADSTS700238 工作負載身分識別聯邦在 Microsoft Entra 租使用者中已被限制。 貴組織的簽發者 (https://vstoken.dev.azure.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) 不允許使用工作負載身分識別同盟。 請求您的 Microsoft Entra 租戶系統管理員或管理團隊允許您的 Azure DevOps 組織使用工作負載身份聯邦。
AADSTS900382:跨雲端不支援機密用戶端 某些主權雲端會封鎖工作負載身分識別同盟。
無法使用服務主體用戶端識別碼取得 JSON Web 令牌 (JWT) 您的同盟身份認證憑證設定不正確,或 Microsoft Entra 租用戶封鎖 OpenID Connect (OIDC)。
執行腳本失敗,出現錯誤:UnrecognizedArgumentError:無法辨識的參數: --federated-token 您在已安裝舊版 Azure CLI 的代理程式上使用 AzureCLI 工作。 工作負載身分識別同盟需要 Azure CLI 2.30 或更新版本。
無法在 Microsoft Entra ID 中建立應用程式。 錯誤:許可權不足,無法完成 Microsoft Graph 中的作業。 確定使用者具有建立Microsoft Entra 應用程式的許可權。 Microsoft Entra 租使用者中已停用建立應用程式註冊的功能。 將正在建立服務連線的使用者指派為 應用程式開發人員 Microsoft Entra 角色。 或者,使用受控識別手動建立服務連線。 如需更多資訊,請參閱受管理身分識別的工作負載身分識別

您所看到的 AADSTS 錯誤是否沒有列在上面? 檢查 Microsoft Entra 驗證和授權錯誤碼