Logo Logo
GitHub Designed by Logto

什麼是權杖內省 (Token introspection)?

權杖內省 (Token introspection) 是在 RFC 7662 中定義的 OAuth 2.0 擴展,允許 客戶端 (clients) 查詢 授權伺服器 (Authorization server) 以驗證訪問權杖 (access tokens) 並獲取其元數據。當發生以下情況時,此擴展特別有用:

  • 客戶端想要實時驗證訪問權杖 (access token) 的有效性。
  • 訪問權杖 (access token) 是 不透明的 (opaque) (不是自包含的)並且需要授權伺服器 (authorization server) 來驗證。

權杖內省 (Token introspection) 如何運作?

以下是一個權杖內省 (token introspection) 請求的非常規範示例:

POST /introspect HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded

token=random-token-value
  &token_type_hint=access_token

token_type_hint 參數是可選的,應設置為正在內省的權杖類型。如果訪問權杖 (access token) 有效,授權伺服器 (authorization server) 將會響應權杖的元數據:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "active": true,
  "scope": "read write",
  "client_id": "client-id",
  "username": "johndoe",
  "token_type": "Bearer",
  "exp": 1634020800,
  "iat": 1634017200
}

值得注意的是,並非所有授權伺服器 (authorization servers) 都支持權杖內省 (token introspection),且並非所有權杖都是可內省的。 授權伺服器 (Authorization server) 可能會根據各種因素限制權杖內省 (token introspection) 的使用,例如,某些授權伺服器 (authorization servers) 可能不支持對 JWTs 的內省。

權杖內省 (Token introspection) 請求中的關鍵參數

以下是權杖內省 (token introspection) 請求中的兩個關鍵參數:

  • token: 要內省的權杖。
  • token_type_hint: 正在內省的權杖類型。可以是 access_tokenrefresh_token

另見