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中的内容

添加依赖

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...