SpringSecurityOauth2架构Demo笔记
创始人
2024-05-12 23:16:12
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中的内容

添加依赖

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...