spring boot 集成 oauth2
2025-02-23 14:11:19
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 节点,添加:
<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
修改后的 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 加密,所以,创建用户时,密码设置以及登录时密码加密都需要特别注意,对应的分别是创建用户这段代码里的:
userEntity.setPassword(SecurityUtils.password(loginUser.getUserName(), loginUser.getPassword()));
以及 LoginServiceImpl.java 里 getNewOauthTokenByPassword 方法中的:
Authentication usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(userAccount, SecurityUtils.md5(userAccount, userPassWord));
最后更新于