本文提供透過服務主體,透過各種 TokenCredential 實作驗證適用於 Java 應用程式的 Azure SDK 時所遇到的問題的指引。 如需詳細資訊,請參閱 使用服務主體進行 Azure 驗證。
針對 ClientSecretCredential 進行疑難解答
當您使用 ClientSecretCredential 時,可以選擇性地嘗試捕捉 ClientAuthenticationException。 下表顯示此例外狀況所指出的錯誤,以及風險降低的方法:
| 錯誤碼 | 問題 | 緩解 |
|---|---|---|
AADSTS7000215 |
已提供無效的客戶端密碼。 | 請確保建構憑證時提供的 clientSecret 是有效的。 如果不確定,請使用 Azure 入口網站 建立新的客戶端密碼。 如需詳細資訊,請參閱建立 Microsoft Entra 應用程式及可存取資源的服務主體的一節:建立新的應用程式秘密。 |
AADSTS7000222 |
已提供過期的客戶端密碼。 | 使用 Azure 入口網站 建立新的客戶端密碼。 如需詳細資訊,請參閱建立 Microsoft Entra 應用程式及可存取資源的服務主體的一節:建立新的應用程式秘密。 |
AADSTS700016 |
在指定的租戶中找不到指定的應用程式。 | 確保指定的 clientId 和 tenantId 對於您的應用程式註冊是正確的。 針對多租使用者應用程式,請確定租用戶系統管理員已將應用程式新增至所需的租使用者。 如需詳細資訊,請參閱建立可存取資源的 Microsoft Entra 應用程式和服務主體。 |
針對 ClientCertificateCredential 進行疑難解答
當您使用 ClientCertificateCredential 時,可以選擇性地嘗試捕捉 ClientAuthenticationException。 下表顯示此例外狀況所指出的錯誤,以及風險降低的方法:
| 錯誤碼 | 描述 | 緩解 |
|---|---|---|
AADSTS700027 |
用戶端宣告包含無效的簽章。 | 請確定您已將指定的憑證上傳至 Microsoft Entra 應用程式註冊。 如需詳細資訊,請參閱 建立可存取資源的 Microsoft Entra 應用程式和服務主體 一節中的 上傳由證書頒發機構所簽發的受信任憑證 章節。 |
AADSTS700016 |
在指定的租戶中找不到指定的應用程式。 | 請確保指定的 clientId 和 tenantId 對您的應用程式註冊是正確的。 針對多租使用者應用程式,請確定租用戶系統管理員已將應用程式新增至所需的租使用者。 如需詳細資訊,請參閱建立可存取資源的 Microsoft Entra 應用程式和服務主體。 |
ClientAssertionCredential 的故障排除
當您使用 ClientAssertionCredential 時,可以選擇性地嘗試捕捉 ClientAuthenticationException。 下表顯示此例外狀況所指出的錯誤,以及風險降低的方法:
| 錯誤碼 | 描述 | 緩解 |
|---|---|---|
AADSTS700021 |
用戶端聲明應用程式識別碼不匹配 client_id 參數。 |
請確定所建立的 JWT 判斷提示具有針對 sub 承載 和 issuer 值指定的正確值。 這兩個字段都應該等於 clientId。 如需瞭解用戶端聲明格式,請參閱 Microsoft 身分識別平台 應用程式驗證憑證。 |
AADSTS700023 |
用戶端聲明的受眾不匹配領域的簽發者。 | 請確保在建立的 JWT 聲明中,aud 欄位具有有效負載中所指定的受眾的正確值。 將此欄位設定為 https://login.microsoftonline.com/{tenantId}/v2。 |
AADSTS50027 |
JWT 令牌無效或格式不正確。 | 請確定 JWT 判斷提示令牌的格式有效。 如需詳細資訊,請參閱 Microsoft 身分識別平台的應用程式驗證憑證認證。 |
下一步
如果本文中的疑難排解指引無法協助您解決在使用適用於 Java 的 Azure SDK 用戶端程式庫時遇到的問題,我們建議您在適用於 Java 的 Azure SDK GitHub 存放庫中回報問題。