spring boot 集成 oauth2 需要添加 spring-cloud-starter-oauth2 依赖, 另外,还需要指定 spring cloud 的版本或者指定 spring-cloud-starter-oauth2 的版本,但是后者不是推荐的做法。假设你依赖了好几个 spring cloud 组件,而你却每个组件单独指定了版本,不是指定 spring cloud 的版本,则可能出现错误,依赖上的混乱。
spring boot 集成 oauth 可以按如下步骤进行
添加 oauth2 的依赖
- 在 pom.xml 里添加
- 在 pom.xml 里的 下面添加:
- 修改 pom.xml 里的 properties 节点,添加:
修改后的 pom.xml 应该是这样的:
这里,我删除了其他无关的配置。现在,我们开始敲代码啦,核心代码主要涉及:ClientDetailsService、UserDetailsService、TokenStore、DefaultTokenServices、ResourceServerConfigurerAdapter、WebSecurityConfigurerAdapter 等几个类,限于篇幅,本文将只有核心代码。
spring boot oauth2 核心类
- CustomClientDetailsService.java
- CustomUserDetailsService.java
- RedisTokenConfig.java
- ResourceServer.java
- SpringSecurityConfig.java
- LoginService.java
- LoginServiceImpl.java
- SecurityUtils.java
最后,再贴一段创建用户的代码:
请注意,这里,用户密码是 先 md5 之后又 使用了 Bcrypt 加密,所以,创建用户时,密码设置以及登录时密码加密都需要特别注意,对应的分别是创建用户这段代码里的:
以及 LoginServiceImpl.java 里 getNewOauthTokenByPassword 方法中的: