針對服務主體驗證進行疑難解答

本文提供透過服務主體,透過各種 TokenCredential 實作驗證適用於 Java 應用程式的 Azure SDK 時所遇到的問題的指引。 如需詳細資訊,請參閱 使用服務主體進行 Azure 驗證。

針對 ClientSecretCredential 進行疑難解答

當您使用 ClientSecretCredential時,可以選擇性地嘗試/攔截 ClientAuthenticationException。 下表顯示此例外狀況所指出的錯誤,以及風險降低的方法:

錯誤碼 問題 降低
AADSTS7000215 已提供無效的客戶端密碼。 確定 clientSecret 建構認證時所提供的 有效。 如果不確定,請使用 Azure 入口網站 建立新的客戶端密碼。 如需詳細資訊,請參閱建立可存取資源的 Microsoft Entra 應用程式和服務主體的<建立新的應用程式秘密>一節。
AADSTS7000222 已提供過期的客戶端密碼。 使用 Azure 入口網站 建立新的客戶端密碼。 如需詳細資訊,請參閱建立可存取資源的 Microsoft Entra 應用程式和服務主體的<建立新的應用程式秘密>一節。
AADSTS700016 在指定的租使用者中找不到指定的應用程式。 請確定指定的 clientIdtenantId 適用於您的應用程式註冊正確。 針對多租使用者應用程式,請確定租用戶系統管理員已將應用程式新增至所需的租使用者。 如需詳細資訊,請參閱 建立可存取資源的 Microsoft Entra 應用程式和服務主體。

針對 ClientCertificateCredential 進行疑難解答

當您使用 ClientCertificateCredential時,可以選擇性地嘗試/攔截 ClientAuthenticationException。 下表顯示此例外狀況所指出的錯誤,以及風險降低的方法:

錯誤碼 描述 風險降低
AADSTS700027 用戶端判斷提示包含無效的簽章。 請確定您已將指定的憑證上傳至 Microsoft Entra 應用程式註冊。 如需詳細資訊,請參閱建立可存取資源的 Microsoft Entra 應用程式和服務主體一節的上傳證書頒發機構單位所簽發的受信任憑證。
AADSTS700016 在指定的租使用者中找不到指定的應用程式。 請確定指定的 clientIdtenantId 適用於您的應用程式註冊正確。 針對多租使用者應用程式,請確定租用戶系統管理員已將應用程式新增至所需的租使用者。 如需詳細資訊,請參閱 建立可存取資源的 Microsoft Entra 應用程式和服務主體。

針對 ClientAssertionCredential 進行疑難解答

當您使用 ClientAssertionCredential時,可以選擇性地嘗試/攔截 ClientAuthenticationException。 下表顯示此例外狀況所指出的錯誤,以及風險降低的方法:

錯誤碼 描述 風險降低
AADSTS700021 用戶端判斷提示應用程式識別碼不符合 client_id 參數。 請確定所建立的 JWT 判斷提示具有針對 sub 承載 和 issuer 值指定的正確值。 這兩個字段都應該等於 clientId。 如需客戶端判斷提示格式,請參閱 Microsoft 身分識別平台 應用程式驗證憑證認證
AADSTS700023 用戶端判斷提示物件宣告不符合 Realm 簽發者。 請確定所建立 JWT 判斷提示中的物件 aud 欄位具有承載中所指定物件的正確值。 將此欄位設定為 https://login.microsoftonline.com/{tenantId}/v2
AADSTS50027 JWT 令牌無效或格式不正確。 請確定 JWT 判斷提示令牌的格式有效。 如需詳細資訊,請參閱 Microsoft 身分識別平台 應用程式驗證憑證認證

下一步

如果本文中的疑難解答指引無法協助您在使用適用於 Java 的 Azure SDK 用戶端連結庫時解決問題,建議您適用於 Java 的 Azure SDK GitHub 存放庫中提出問題。