SpringSecurityOauth2架构Demo笔记
创始人
2024-05-12 18:48:04
0

总体分为SpringSecurityOauth2授权码模式演示和密码模式演示

 

 

一直下一步,依赖手动导入,SpringBoot版本改成2.2.5.RELEASE,JDK版本1.8


4.0.0org.springframework.bootspring-boot-starter-parent2.2.5.RELEASE com.examplespringsecurityoauth2-demo0.0.1-SNAPSHOTspringsecurityoauth2-demoDemo project for Spring Boot1.8Greenwich.SR2org.springframework.cloudspring-cloud-starter-oauth2org.springframework.cloudspring-cloud-starter-securityorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtestorg.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimportorg.springframework.bootspring-boot-maven-plugin

授权码模式演示:

SpringSecurity引入之后会有一个默认用户user和默认密码,项目启动后控制台输出的那个

需要先自定义一个SpringSecurity登录逻辑,然后去修改用户密码

自定义SpringSecurity登录逻辑需要用到PasswordEncode对密码进行单向加密

如果想用自己自定义可以这么干

package com.example.springsecurityoauth2demo.pojo;import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;import java.util.Collection;
import java.util.List;/*** @author hrui* @date 2023/1/16 8:47*/
public class User implements UserDetails {private String username;private String password;private List authorities;public User(String username, String password, List authorities) {this.username = username;this.password = password;this.authorities = authorities;}@Overridepublic Collection getAuthorities() {return authorities;}@Overridepublic String getPassword() {return password;}@Overridepublic String getUsername() {return username;}@Overridepublic boolean isAccountNonExpired() {return true;}@Overridepublic boolean isAccountNonLocked() {return true;}@Overridepublic boolean isCredentialsNonExpired() {return true;}@Overridepublic boolean isEnabled() {return true;}
}

那么引入自定义的User就可以了

SpringSecurity配置

Oauth2的授权服务器和资源服务器配置

 

 测试获取授权码

http://localhost:8080/oauth/authorize?response_type=code&client_id=admin&redirect_uri=http://www.baidu.com&scope=all

 

 

 

 

 下面通过授权码

使用工具POSTMAN去获取令牌

 

 再开个资源

 获得当前用户主体

 

 

 下面演示密码模式演示

 测试

 

 

 

 也可以拿到用户主体信息

这里token都是存在内存中,实际工作中可能考虑从存到Redis中

引入依赖

 Redis配置类

 测试

还是原先方式获取token

 如果Redis端口不是6379,有密码的话一定要配置

 

 

Redis里

 

JWT  demo

创建token

 解析token

校验token失效

失效后

 关于自定义声明

SpringSecurityOauth2整合JWT(用原来那个demo)

原先我们用的accessToken放到了Redis里面,现在不用了,用JWT

因此Redis依赖可以注释掉

 

properties里Redis配置也去掉

 RedisConfig注释掉

 配置JwtToken

 

 

 

 解析

扩展JwtToken中的内容(自定义声明)

 

 

 

 

解析JWT中的内容

添加依赖

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...