分享

3行代码快速实现Spring Boot Oauth2服务

 侯培彬 2018-04-25

3行代码快速实现Spring Boot Oauth2服务

这里的3行代码并不是指真的只需要写3行代码,而是基于我已经写好的一个Spring Boot Oauth2服务。仅仅需要修改3行数据库配置信息,即可得到一个Spring Boot Oauth2服务。

oauthserver

简介

oauthserver是一个基于Spring Boot Oauth2的完整的独立的Oauth服务器。仅仅需要创建相关数据表,修改数据库的连接信息,你就可以得到一个Oauth服务器。

支持的关系型数据库:

  • PostgreSQL

  • MySQL

已实现的功能:

  1. 集成Spring Boot Oauth2,实现Oauth服务;

  2. token保存到关系型数据库;

  3. 日志记录保存到文件,并按日归档;

  4. 数据库连接信息加密;

  5. 集成Druid数据库连接池。

使用流程

1. 建表

  • PostgreSQL

请执行src/main/resources/schema-pg.sql,完成数据表的创建和测试数据的导入。

  • MySQL

请执行src/main/resources/schema-mysql.sql,完成数据表的创建和测试数据的导入。

2. 修改数据库连接信息

在application.yml中,配置着数据库的连接信息。其中,配置项username和password是要经过jasypt加密的,不能直接填明文。加密密钥由jasypt.encryptor.password配置。你需要使用test目录下的UtilTests工具得到加密字符串。

  • PostgreSQL

3行代码快速实现Spring Boot Oauth2服务

  • MySQL

3行代码快速实现Spring Boot Oauth2服务

3. 运行

现在,一切已准备就绪。运行项目,当程序成功启动时,即表明你已配置成功。

4. 测试

在建表时,我已经向表添加了测试数据。以下请求参数的值,均是测试数据,在数据表中可以找得到。请根据需求到数据表中修改对应的值。

在表oauth_client_details表中,已有一条测试数据。列client_idclient_secret的值,分别对应Basic Oauth的请求参数usernamepassword的值。而列access_token_validity和列refresh_token_validity,分别代表access_token和refresh_token的有效期时间,以秒为单位。测试数据7200和5184000,分别代表2个小时和2个月(60天)。这是一个比较合理的有效期时间的设置,可以参考。

token相关的接口,都需要进行Basic Oauth认证。

3行代码快速实现Spring Boot Oauth2服务

成功示例:

3行代码快速实现Spring Boot Oauth2服务

失败示例(用户名或者密码错误)

3行代码快速实现Spring Boot Oauth2服务

3行代码快速实现Spring Boot Oauth2服务

成功示例

3行代码快速实现Spring Boot Oauth2服务

失败示例(access_token已过期)

3行代码快速实现Spring Boot Oauth2服务

3行代码快速实现Spring Boot Oauth2服务

成功示例

3行代码快速实现Spring Boot Oauth2服务

app实践指南

app获取到token信息后,需要保存token信息和请求时间。在传access_token之前,需要检查access_token是否过期。为了减少后台压力,检查access_token是否过期应该是在app本地完成。通过token的keyexpires_in(剩余有效期)的值,以及本地记录的请求时间,和当前时间做对比,可以很方便地判断出access_token是否过期。如果过期了,需要通过refresh_token获取新的access_token。因为access_token的有效期只有2个小时,这个验证是必须的。refresh_token同理。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多