保留Spring OAuth2RestTemplate的刷新令牌

问题描述 投票:0回答:1

我有一个移动应用程序,它使用我的Spring Boot后端进行身份验证和访问数据。 Spring Boot应用程序的一部分使用OAuth2从资源服务器访问数据。我偶然发现了Spring的oauth2 client library,它发挥了神奇的作用,并且所有东西都开箱即用。

当我试图弄清楚该库如何工作时,我似乎无法找到其处理刷新令牌的方式的答案。我知道oauth2client绑定到每个用户的会话,但是会话结束时会发生什么?访问和刷新令牌不会丢失吗?

我一直在寻找方法来为数据库中的每个用户持久保存刷新令牌,但是我在库中找不到对此的任何支持。这让我想知道我是否必须自己实施还是什至需要这样做。

任何建议都值得赞赏!

java spring-boot spring-security-oauth2 refresh-token oauth2resttemplate
1个回答
0
投票

基本上,OAuth2体系结构用于第三方身份验证和授权。在这种机制中,当一切都对令牌有效时,凭据将保持安全,并且不会继续传递!但是您也可以使用它来隐式地为您自己的身份验证工作。


在您的情况下,当您首先点击“ / oauth / token”(默认端点)以及client-secret和client-Id以及其余的用户凭据时,算法会检查数据库中的用户详细信息,以及匹配请求标头中存在的机密和ID。如果一切顺利,它将生成一个承载类型-访问和刷新令牌,并将这些令牌存储在数据库中的不同集合中。该特定用户映射到该令牌,并且只能使用/ api访问/ api。 。如果您使用MongoDb来存储和访问存储的令牌,则可以使用MongoTokenStore。

接下来,您必须配置WebSecurity / AuthorizationServer / ResourceServer来检查端点和标头令牌令牌,用户的身份验证和授权并分别提供对资源的有效令牌访问。

最后,当您拥有有效的访问令牌并使用正确的标头命中api时,服务器会授予您访问资源的权限!

这是OAuth2.0的功能。

通常,访问令牌的生存期较短,而刷新令牌的生存期则相对较长。访问令牌过期后,可以使用刷新令牌生成新的访问令牌。如果“刷新令牌”已过期,则必须再次点击“ / oauth / token” API,完成流程并再次生成令牌。这是该机制的默认架构,您可以根据需要创建自定义类并修改其功能!此体系结构非常安全,是一种很好的实践。

Flow Diagram

© www.soinside.com 2019 - 2024. All rights reserved.