【问题标题】:How OAuth Refresh Token works at client side?OAuth 刷新令牌如何在客户端工作?
【发布时间】:2021-04-11 06:40:54
【问题描述】:

我已经实现了 Spring Oauth 2 服务器并为我的一项服务添加了授权。 我想明白, 当我击球时:

localhost:9191/oauth/token?grant_type=password&username=krish&password=kpass

我收到这样的回复:

{
    "access_token": "24a20377-2ce7-4c6c-a65c-87adf443854b",
    "token_type": "bearer",
    "refresh_token": "39da80da-83bb-49e1-8e6a-8432428637ad",
    "expires_in": 59,
    "scope": "READ WRITE"
}

我正在使用相同的 access_token 来验证我的客户端,如下所示:

localhost:8080/getName
Adding header :
Authorization : bearer 24a20377-2ce7-4c6c-a65c-87adf443854b

所以我的问题是在 60 秒(到期时间)之后,我的客户将如何在刷新令牌的帮助下获得新令牌? (我假设客户在同一个会话中)。 spring 是用它的库在内部处理它还是我们需要在服务器中添加的任何东西? 请帮忙!

【问题讨论】:

    标签: java spring-security oauth-2.0 oauth spring-security-oauth2


    【解决方案1】:

    客户端将发送 Refresh Token Grant 消息,如this article 中所述。在 OAuth 中,授予是获得令牌的原因:

    • 您已实施上述密码授予
    • 大多数 UI 在用户登录后使用授权码授予
    • 当访问令牌过期时,刷新令牌授予用于静默更新

    Grant 消息通常是对令牌端点的 POST 请求。大多数人使用现成的授权服务器为您处理它们,因此您不必自己编写代码。

    【讨论】:

    • 所以客户端会自动点击 HttpResponse response = Unirest.post("localhost:9191/oauth/token) .header("content-type", "application/x-www-form-urlencoded" ) .body("grant_type=refresh_token&client_id=mobile&client_secret=pin&refresh_token=REFRESHTOKEN) .asString();令牌何时过期?并获得新的令牌?
    • 是的 - 通常,当访问令牌过期时,客户端会从 API 获得 401 响应。然后客户端将发送上述刷新令牌授予消息以获取新的访问令牌,然后重试 API 调用。这是一些example client code
    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 2016-03-19
    • 2019-05-24
    • 1970-01-01
    • 2018-12-08
    • 2016-03-22
    • 2019-12-30
    相关资源
    最近更新 更多