前言

前面的文章Spring Cloud进阶之路 | 八:授权服务(Spring Cloud Oauth2)中,介绍了基于Spring Cloud Oauth2框架的微服务授权服务器。客户端申请的授权token,和默认的ClientDetails存储方式一样,均存储在内存中,一旦服务重启,势必会造成所有客户端已申请且未过期的token失效。所以,和ClientDetails一样,也需要对token进行持久化存储。基于上一篇文章 Spring Cloud进阶之路 | 十八:授权服务(Spring Cloud Oauth2)ClientDetailsService之JdbcClientDetailsService中建立的数据结构,本文即介绍基于此数据结构的数据库存储token方式,即JdbcTokenStore。

准备工作

基于上一篇文章 Spring Cloud进阶之路 | 十八:授权服务(Spring Cloud Oauth2)ClientDetailsService之JdbcClientDetailsService中的授权服务xmall-auth,及其对应的数据结构。

 

默认的TokenStore

在没介绍如何配置JdbcTokenStore之前,先说明一下,框架默认的TokenStore逻辑么。前面已经说过,框架默认的TokenStore为内存存储,即InMemoryTokenStore。

见诸上图逻辑,框架默认的的TokenStore为InMemoryTokenStore。

 

配置

通过方法public void configure(ClientDetailsServiceConfigurer clients) throws Exception配置TokenStore。

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
    endpoints.authenticationManager(authenticationManager)
        .userDetailsService(userDetailsService)
        .allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST)
        .tokenStore(new JdbcTokenStore(dataSource));
    ;
}

 

验证

启动xmall-auth工程,端口为7777。

访问http://localhost:7777/oauth/token,输入一众参数,诸如client_id、client_secret、grant_type等,点击Send,即出现access_token、refresh_token等信息。

查看数据库,表oauth_access_token中,已存储了此次申请的token信息。

 

源码


github

https://github.com/liuminglei/SpringCloudLearning/tree/master/19/

gitee

https://gitee.com/xbd521/SpringCloudLearning/tree/master/19/

 

 

 

本文系【银河架构师】原创,如需转载请在文章明显处注明作者及出处。

微信搜索【银河架构师】,发现更多精彩内容。

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐