gpt4 book ai didi

oauth-2.0 - 如何在 OpenID Connect/OAuth2 隐式流中获取新的访问 token

转载 作者:行者123 更新时间:2023-12-04 20:31:35 25 4
gpt4 key购买 nike

我目前在移动应用程序中使用 OpenID Connect/Oauth2 隐式流。我正在为用户提供一个 Web View 以登录并获取访问 token 和到期时间。但是,当访问 token 过期时,是否需要要求用户重新登录?或者有没有一种方法可以使用当前的访问 token 以静默方式获取新的访问 token ,而不会打扰用户。我想另一种选择是将 token 到期时间设置为很长一段时间,但我读到这是一个坏主意。

我在这里错过了什么吗?

最佳答案

由于隐式流不发送刷新 token (如 RFC6746 的 section 9 中所述),因此无法使用刷新 token 。但作为一种解决方法,可以使用 client credential grant获取访问 token 。

一个可行的解决方案是首先遵循隐式流程并验证客户端。然后客户端身份验证授权 可用于执行所需的 API 调用。

sample 请求(来自 RFC6749)

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

rant_type=client_credentials

样本响应(来自 RFC6749)
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"example",
"expires_in":3600,
"example_parameter":"example_value"
}

P.S -
如果您正在使用 授权码流程 ,您可以使用 refresh_token获取新的访问 token 。请求应该如何形成可以从 OAuth2 documentation获得。 .请注意,为此,您的授权响应应包含一个 `refresh_token。

刷新 token 应该像用户凭据一样受到保护。可以从 here 的 keycloak 文档中阅读更多内容。

示例请求和响应(来自 RFC6749)

请求
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA

回复
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
"access_token": "TlBN45jURg",
"token_type": "Bearer",
"refresh_token": "9yNOxJtZa5",
"expires_in": 3600
}

关于oauth-2.0 - 如何在 OpenID Connect/OAuth2 隐式流中获取新的访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44814971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com