如何验证 OAuth2 + PCKE 流的访问令牌
How to Validate an Access Token for OAuth2 + PCKE flow
根据这份文件
https://developers.onelogin.com/openid-connect/guides/auth-flow-pkce
PCKE 流的令牌端点是 None(不是 Basic 或 POST)
那么,我如何使用验证令牌 API https://developers.onelogin.com/openid-connect/api/validate-session 因为它支持 Basic authentication
或 POST
但不支持 None (PCKE)
我不能查找与此相关的任何信息。
注意: 我尝试使用基本身份验证请求,但没有 + client_id、client_secret 作为参数,但无法正常工作。
响应401未授权
{
"error": "invalid_client",
"error_description": "client authentication failed"
}
我将 OIDC 与 PKCE 一起使用,并且我设法使用通过授权代码流检索到的令牌调用 https://openid-connect.onelogin.com/oidc/token/introspection 端点:
$ curl -i -d "token=...&token_type_hint=access_token&client_id=..." https://openid-connect.onelogin.com/oidc/token/introspection
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Length: 304
Content-Type: application/json; charset=utf-8
Date: Thu, 25 Apr 2019 23:37:42 GMT
Pragma: no-cache
X-Powered-By: Express
Set-Cookie: ol_oidc_canary_040819=false; path=/; domain=.onelogin.com
{"active":true,"sub":"...","client_id":"...","exp":1558819177,"iat":1556227177,"sid":"...","iss":"https://openid-connect.onelogin.com/oidc","jti":"...","scope":"openid profile email"}
从授权代码流 https://developers.onelogin.com/openid-connect/api/authorization-code-grant 返回的 access_token
和 refresh_token
都有效,而 access_token
仅在过期后返回 {"active":false}
。
确保您没有设置 Authorization
header,并且仅在有效负载中设置 client_id
。
在 POST 正文中使用 client_id 和 code_verify。这将验证该端点上的请求。
根据这份文件 https://developers.onelogin.com/openid-connect/guides/auth-flow-pkce
PCKE 流的令牌端点是 None(不是 Basic 或 POST)
那么,我如何使用验证令牌 API https://developers.onelogin.com/openid-connect/api/validate-session 因为它支持 Basic authentication
或 POST
但不支持 None (PCKE)
我不能查找与此相关的任何信息。
注意: 我尝试使用基本身份验证请求,但没有 + client_id、client_secret 作为参数,但无法正常工作。
响应401未授权
{
"error": "invalid_client",
"error_description": "client authentication failed"
}
我将 OIDC 与 PKCE 一起使用,并且我设法使用通过授权代码流检索到的令牌调用 https://openid-connect.onelogin.com/oidc/token/introspection 端点:
$ curl -i -d "token=...&token_type_hint=access_token&client_id=..." https://openid-connect.onelogin.com/oidc/token/introspection
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Length: 304
Content-Type: application/json; charset=utf-8
Date: Thu, 25 Apr 2019 23:37:42 GMT
Pragma: no-cache
X-Powered-By: Express
Set-Cookie: ol_oidc_canary_040819=false; path=/; domain=.onelogin.com
{"active":true,"sub":"...","client_id":"...","exp":1558819177,"iat":1556227177,"sid":"...","iss":"https://openid-connect.onelogin.com/oidc","jti":"...","scope":"openid profile email"}
从授权代码流 https://developers.onelogin.com/openid-connect/api/authorization-code-grant 返回的 access_token
和 refresh_token
都有效,而 access_token
仅在过期后返回 {"active":false}
。
确保您没有设置 Authorization
header,并且仅在有效负载中设置 client_id
。
在 POST 正文中使用 client_id 和 code_verify。这将验证该端点上的请求。