【问题标题】:Where did access_token saved?access_token 保存在哪里?
【发布时间】:2015-05-16 03:42:52
【问题描述】:

我知道security Oauth2 会将Access_token 发送给Client App,以便Client APP 可以使用这些access_token 去获取服务。
我的问题是:service怎么知道Client发送的access_token是对的??
在下图中,security Oauth2service 似乎使用 DB/MEMORY 通信
在这里做security Oauth2save access_token 告诉service哪个是对的??
我在哪里可以找到这些部分的代码??
谢谢。

【问题讨论】:

    标签: oauth-2.0 spring-security-oauth2


    【解决方案1】:

    在客户端应用程序中,您很可能会使用 RestTemplate 与资源服务器进行通信。要利用 Spring 的 oauth 功能,您的 rest 模板必须扩展 Spring 的 OAuth Oauth2RestTemplate。此 RestTemplate 实现的字段之一是 Oauth2ClientContext。这是 Spring 存储 access_token 的地方。

    当 RestClient 调用资源端点时,会构建一个包含 OAuth 访问令牌的请求对象。

    看看这个方法:OAuth2RestTemplate.createRequest(URI uri, HttpMethod method)

    【讨论】:

    • 不好意思,你的意思是我们保存在客户端应用程序中的access_token??
    • 实际上保存了两个令牌:access_tokenrefresh_token。访问令牌的生存时间(分钟/小时)比刷新令牌(月/年)短得多。客户端应用程序将使用访问令牌向 oauth 提供者进行身份验证。如果该访问令牌已过期,它将使用刷新令牌来获取新的访问令牌并使用新的令牌来获取服务器上的访问权限。所以是的,两者都保留在客户端应用程序中。
    • 有关更多信息,您可以查看 oauth 规范:tools.ietf.org/html/rfc6749#section-1.4 获取访问令牌,tools.ietf.org/html/rfc6749#section-1.5 获取刷新令牌。
    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2011-08-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多