Class OAuth2TokenException

java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
io.leandev.appfuse.security.auth.OAuth2TokenException
All Implemented Interfaces:
Serializable

public class OAuth2TokenException extends RuntimeException

token 端點的錯誤(RFC 6749 §5.2

承載線層級的錯誤碼與 HTTP 狀態,由消費端的殼依方言序列化 (OAuth2 方言 → {"error": ..., "error_description": ...};其他方言可映為自家形狀)。

刻意繼承 AuthenticationException:本例外家族涵蓋 invalid_request / unsupported_grant_type / invalid_scope非認證失敗的請求錯誤,掛進認證例外家族 會讓消費端既有的認證例外處理誤攔。

See Also:
  • Constructor Details

    • OAuth2TokenException

      public OAuth2TokenException(String error, int status, String description)
      Parameters:
      error - RFC 6749 §5.2 錯誤碼
      status - HTTP 狀態碼
      description - 錯誤描述(即 error_description
    • OAuth2TokenException

      public OAuth2TokenException(String error, int status, String description, Throwable cause)
      建立保留原始拒絕例外的 token 錯誤。
  • Method Details

    • getError

      public String getError()
    • getStatus

      public int getStatus()
    • getDescription

      public String getDescription()
      錯誤描述(error_description);等同 Throwable.getMessage()
    • invalidRequest

      public static OAuth2TokenException invalidRequest(String description)
      請求本身有問題(缺參數、同時使用兩種 client 認證方式、Basic 標頭格式錯誤)
    • unsupportedGrantType

      public static OAuth2TokenException unsupportedGrantType()
      grant_type 非本端點支援者
    • invalidScope

      public static OAuth2TokenException invalidScope()
      請求了 scope 但本端點尚未支援(ClientCredentialsService 決策:不得靜默忽略, 否則呼叫端會誤以為權限已收窄)
    • invalidClient

      public static OAuth2TokenException invalidClient(String description)
      client 憑證失敗;保留實際診斷,由 response policy 決定揭露程度。
    • invalidClient

      public static OAuth2TokenException invalidClient(String description, Throwable cause)
      client 憑證失敗並保留底層認證例外。
    • rateLimited

      public static OAuth2TokenException rateLimited()

      速率限制逾額

      RFC 6749 §5.2 對應的 token 端點錯誤碼——限流屬 HTTP 層關注、標準呼叫端依狀態碼 (429)處理。此處取語意最近的 temporarily_unavailable(§4.1.2.1)作為 body 的錯誤碼。