取得協助偵錯工作負載身分識別服務連線的常見問題。 您也可以瞭解如何視需要手動建立服務連線。
疑難排解檢查清單
使用以下檢查清單來解決工作負載身分識別服務連線問題的疑難:
- 檢閱管線工作,以確保它們支援工作負載身分識別。
- 確認租戶的工作負載身分識別聯盟已啟用。
- 檢查頒發者 URL 和聯合主題標識碼的準確性。
下列各節說明問題以及如何解決這些問題。
檢閱管線工作
幾乎所有透過 Microsoft Entra 驗證的管道任務,都支援工作負載身分識別。 下表列出 Azure DevOps 包含的任務的工作負載身分識別同盟支援。 若為從市集安裝的任務,請聯絡延伸項目發行者以獲得支援。
| 任務 | 工作負載身份驗證聯盟支援 |
|---|---|
| AutomatedAnalysis@0 | 是 |
| AzureAppServiceManage@0 | 是 |
| AzureAppServiceSettings@1 | 是 |
| AzureCLI@1 | 是 |
| AzureCLI@2 | 是 |
| AzureCloudPowerShellDeployment@1 | 使用AzureCloudPowerShellDeployment@2 |
| AzureCloudPowerShellDeployment@2 | 是 |
| AzureContainerApps@0 | 是 |
| AzureContainerApps@1 | 是 |
| AzureFileCopy@1 | 使用AzureFileCopy@6 |
| AzureFileCopy@2 | 使用AzureFileCopy@6 |
| AzureFileCopy@3 | 使用AzureFileCopy@6 |
| AzureFileCopy@4 | 使用AzureFileCopy@6 |
| AzureFileCopy@5 | 使用AzureFileCopy@6 |
| AzureFileCopy@6 | 是 |
| AzureFunctionApp@1 | 是 |
| AzureFunctionApp@2 | 是 |
| AzureFunctionAppContainer@1 | 是 |
| AzureFunctionOnKubernetes@0 | 使用AzureFunctionOnKubernetes@1 |
| AzureFunctionOnKubernetes@1 | 是 |
| AzureIoTEdge@2 | 是 |
| AzureKeyVault@1 | 是 |
| AzureKeyVault@2 | 是 |
| AzureMonitor@0 | 使用AzureMonitor@1 |
| AzureMonitor@1 | 是 |
| AzureMysqlDeployment@1 | 是 |
| AzureNLBManagement@1 | 否 |
| AzurePolicyCheckGate@0 | 是 |
| AzurePowerShell@2 | 是 |
| AzurePowerShell@3 | 是 |
| AzurePowerShell@4 | 是 |
| AzurePowerShell@5 | 是 |
| AzureResourceGroupDeployment@2 | 是 |
| AzureResourceManagerTemplateDeployment@3 | 是 |
| AzureRmWebAppDeployment@3 | 是 |
| AzureRmWebAppDeployment@4 | 是 |
| AzureSpringCloud@0 | 是 |
| AzureVmssDeployment@0 | 是 |
| AzureWebApp@1 | 是 |
| AzureWebAppContainer@1 | 是 |
| ContainerBuild@0 | 是 |
| ContainerStructureTest@0 | 是 |
| Docker@0 | 是 |
| Docker@1 | Azure 服務連線:Y Docker 登錄服務連線:N |
| Docker@2 | 是 |
| DockerCompose@0 | 是 |
| DockerCompose@1 | 是 |
| DotNetCoreCLI@2 | 是 |
| HelmDeploy@0 | Azure 服務連線:Y |
| HelmDeploy@1 | Azure 服務連線:Y |
| InvokeRESTAPI@1 | 是 |
| JavaToolInstaller@0 | 是 |
| JenkinsDownloadArtifacts@1 | 是 |
| Kubernetes@0 | 使用Kubernetes@1 |
| Kubernetes@1 | 是 |
| KubernetesManifest@0 | 使用KubernetesManifest@1 |
| KubernetesManifest@1 | 是 |
| Maven@4 | 是 |
| Notation@0 | 是 |
| PackerBuild@0 | 使用PackerBuild@1 |
| PackerBuild@1 | 是 |
| PublishToAzureServiceBus@1 | 使用 PublishToAzureServiceBus@2 並透過 Azure 服務連線 |
| PublishToAzureServiceBus@2 | 是 |
| ServiceFabricComposeDeploy@0 | 否 |
| ServiceFabricDeploy@1 | 否 |
| SqlAzureDacpacDeployment@1 | 是 |
| VSTest@3 | 是 |
確認工作負載身分識別聯盟處於啟用狀態
如果您看到錯誤訊息 AADSTS700223 或 AADSTS700238,則在您的 Microsoft Entra 租使用者中已停用工作負載身分識別聯盟。
驗證是否沒有會封鎖同盟認證的任何 Microsoft Entra 原則。
檢查簽發者 URL 是否正確
如果您看到訊息指出 找不到相符的同盟身分識別記錄,則簽發者 URL 或同盟主體不相符。 對於新的服務連線,正確的簽發者 URL 以 https://login.microsoftonline.com 開頭:
| Azure DevOps 發行者 | Microsoft Entra 簽發者 (新的服務連線) | |
|---|---|---|
| Issuer | https://vstoken.dev.azure.com/<organization id> |
https://login.microsoftonline.com/<microsoft entra tenant id>/v2.0 |
| 主旨 | sc://<organization name>/<project name>/<service connection name> |
<microsoft entra prefix>/sc/<organization id>/<service connection id> |
您可以透過編輯並儲存服務連線來更新簽發者 URL。 如果 Azure DevOps 並未建立身分識別,則必須手動更新簽發者 URL。 在 Azure 身分識別中,簽發者 URL 會自動更新。
常見問題
下一節會識別常見問題,並描述原因和解決方式。
我不具備在 Microsoft Entra 租用戶中建立服務主體的權限
如果不具備正確的權限,就無法使用 Azure DevOps 服務連線組態工具。 如果您不具備可以建立服務主體的權限,或者使用了不同於 Azure DevOps 使用者的 Microsoft Entra 租用戶,則您的權限等級不足以使用此工具。
必須具備在 Microsoft Entra ID 中建立應用程式註冊的權限,或具備適當的角色 (例如應用程式開發人員)。
若要解決問題,您有兩個選項:
如何在自動化中建立工作負載身分識別聯合服務連線?
工作負載身分同盟定義身分識別與服務連線之間的雙向關係。 因此,對象必須依特定順序建立,而且只能在建立服務連線之後建立同盟認證。 若要瞭解如何自動建立工作負載身分識別服務連線,請移至使用 腳本將 Azure Resource Manager 與工作負載身分識別服務連線自動化。
錯誤訊息
下表列出了可能產生這些錯誤訊息的常見問題:
| 訊息 | 可能的問題 |
|---|---|
無法要求憑證:取得 ?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://login.microsoftonline.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX為 。 您可以透過編輯並儲存服務連線來修正簽發者 URL。 如果 Azure DevOps 未建立您的身分識別,您必須手動更新簽發者。 您可以在服務連接的編輯對話框中找到正確的頒發者,如果使用 REST API,則可以在回應中找到正確的頒發者。 |
AADSTS70021:找不到與提供的聲明相符的聯邦身分識別記錄。 聲明發行者:https://login.microsoftonline.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://login.microsoftonline.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) 不允許將工作負載身分識別同盟與您正在使用的工作負載身分識別類型 (應用程式註冊和/或受控識別) 搭配使用。 請求您的 Microsoft Entra 租戶系統管理員或管理團隊允許您的 Azure DevOps 組織使用工作負載身份聯邦。 |
| AADSTS70052:身分識別必須是受管理的身分識別、單一租用戶應用程式或服務帳戶 | Microsoft Entra 發行者目前不支援多租用戶應用程式註冊 signInAudience: AzureADMultipleOrgs。 使用 signInAudience: AzureADMyOrg 並分割對多個租用戶的存取權,以改為針對每個租用戶使用不同的服務連線。 如果您依賴 在單一要求中存取多個租用戶 的 ARM 作業(例如,虛擬網路的跨租用戶對等),您可以聯絡支援,以便讓您的 Azure DevOps 組織改用 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 驗證和授權錯誤碼。