springboot整合springsecurity+oauth2.0授权认证+jwt增强
项目整体结构
主要pom文件引入
编写实体类
用户类
角色类
编写自定义的UserDetailSer vice
接口
实现类
编写相关配置文件
强哈希加密
jwt增强
securityConfig
OauthConfig
ResourceConfig
测试
使用password授权方式
本文将采用springboot去整合springsecurity,采用oauth2.0授权认证,使用jwt对token增强。本文仅为学习记录,如有不足多谢提出。 一般资源服务器和授权是不放在一起的我为了方便先放在一起,直接在授权处开启资源服务。所有我用授权码模式时会请求不到授权码,其他模式均可获取token并用token访问本项目资源。 后续更新资源服务的配置。
项目整体结构
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210106111716710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzQxMTIw,size_16,color_FFFFFF,t_70)
主要pom文件引入
org.springframework.boot
spring-boot-starter-security
org.springframework.security.oauth
spring-security-oauth2
2.2.6.RELEASE
org.springframework.security
spring-security-jwt
1.1.0.RELEASE
编写实体类
用户类
package com.fxj.springsecurityoauth2.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import java.util.Collection;
import java.util.List;
@Data
@TableName("sys_user")
public class SysUser implements UserDetails {
@TableId(type = IdType.AUTO)
private Long id;
@TableField("username")
private String username;
@TableField("account")
private String account;
@TableField("password")
private String password;
@TableField(exist = false)
private List roleList;
@Override
public Collection getAuthorities() {
return roleList;
}
@Override
public String getUsername() {
return username;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled()
|