Springsecurity普通登录认证和OAuth2产生token的认证流程

Spring Security OAuth2根据授权码获取Token源码 OAuth2根据授权码获取Token 阅读详情

一、普通登录认证过程

        1.用户发起登录请求,请求登录接口/login(springsecurity默认登录接口地址)
        2.过滤器UsernamePasswordAuthenticationFilter验证当前请求是否是在请求登录接口/login,如果是调用attemptAuthentication方法开始认证
        3.attemptAuthentication方法在请求中获取到username、password参数封装成一个Authentication对象,调用providerManagerauthenticate方法认证(providerManager认证其实是由实现了AuthenticationProvider接口的各种provider对象认证的),这里完成真正认证逻辑的是DaoAuthenticationProvider对象,如果认证成功则将用户信息放置到SpringsecurityContext中。进入后面的认证成功或失败处理逻辑。

二、OAuth2获取token认证过程

        获取token时主要认证两个信息:1)client_id、client_secre   2)username、password

        1.用户发起获取token的请求,请求/oauth/token接口。
        2.首先会经过滤器ClientCredentialsTokenEndpointFilter,如果请求/oauth/token,则开始对client_id、client_secre进行认证。
        3.过滤器ClientCredentialsTokenEndpointFilter通过clientId查询生成一个Authentication对象。
        4.然后过滤器ClientCredentialsTokenEndpointFilter,调用providerManager对象的authenticate方法,将带有client信息Authentication对象传入,进行客户端的认证(providerManager认证其实是由实现了AuthenticationProvider接口的各种provider对象认证的),这里完成真正认证逻辑的是DaoAuthenticationProvider对象。
        5.以上认证客户端信息的逻辑全部通过后,会进入地址/oauth/token,即TokenEndpoint的postAccessToken方法中。
        6.postAccessToken方法中会验证Scope,然后验证是否是refreshToken请求等。
        7.之后调用AbstractTokenGranter(此时的实现类是ResourceOwnerPasswordTokenGranter)中的grant方法。
        8.grant方法中调用getAccessToken方法,在这个方法中又逐步调用到WebSecurityConfigurerAdapter的AbstractUserDetailsAuthenticationProvider的authenticate方法,对username与password进行认证
        9.验证通过后,把得到Authentication认证结果对象包装成OAuth2Authentication认证对象。然后传给DefaultTokenServices类的tokenStore的getAccessToken方法,利用OAuth2Authentication对象中的信息查找tokenStore中是否已经存在token,存在则返回OAuth2AccessToken对象。如果不存在DefaultTokenServices则调用createAccessToken方法创建OAuth2AccessToken对象。
        10.然后将OAuth2AccessToken对象包装进响应流返回。
        刷新token(refresh token)的流程
        刷新token(refresh token)的流程与获取token的流程只有⑨有所区别:

                1.获取token调用的是AbstractTokenGranter中的getAccessToken方法,然后调用tokenStore中的getAccessToken方法获取token。
                2.刷新token调用的是RefreshTokenGranter中的getAccessToken方法,然后使用tokenStore中的refreshAccessToken方法获取token。

Spring Security Token 认证原理 Java。 阅读详情

相关推荐

基于Spring Security 6的OAuth2 系列之九 - 授权服务器--token的获取

我们从源码OAuth2AuthorizationServerJwtAutoConfiguration可以看到默认情况下是自动生成一个RSA非对称的加密,如下图:安全问题:我们知道密钥是经常需要轮换的,如果使用默认我们就无法定时轮换,当然重新启动就能切换集群问题:如果我们的授权服务器是一个集群,那么每个服务器的密钥都是不一样,无法实现集群效果因此我们只需要自定义jwkSource,就可以自己使用自己生成的RSA密钥。代码参考lesson05子模块。

代码让AI扣 2493

自定义的方式,使用oauth2生成token+token续命

使用oauth2生成 token 的流程+续命

m0_56356631的博客 7412

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

qq_1432825237的博客 3988

Spring Security中使用token

单点登录与多点登录 单点登录:同一个账号在同一时间只有一个token有效。一旦生成新的token,所有旧token失效。 多点登录:同一个账号在同一时间可多次登录,每次登陆都会获得一个token。这些token的有效期是隔离的,不受新生成token的影响。 对于token,若要实现单点登录,则必须将所有token保存在服务端。这实际上与token服务端不负责保存的本质相悖。若要实现单点登录,建议使用session。 下面将实现多点登录。 原理与思路 Spring Security的认证与授权是分开的:

超频化石鱼的博客 1万+

【任何电机可使用的七段式s曲线-----包括matlab代码和simulink仿真】

S形加加速(T1)→>匀加速(T2)→减加速(T3)→>匀速(T4 )>加减速(T5)>匀减速(T6)-→>减减速(T7)

weixin_44312889的博客 6307

c#窗体应用(.NET Framework)项目对Yaml文件进行写入与读取,Yaml数据转换成json

用到的技术与版本准备工作Yaml数据在C#中进行定义对Yaml文件的读取与写入代码的添加窗体控件控制操作写入数据到Yaml文件读取Yaml文件数据Yaml数据转换成json改进——对yaml文件读取时根据yaml文件中的键进行获取,对c#中怎么取名字无关yaml文件中多个数据读取遇到的问题总结的小点参考的文章在对Yaml文件进行读取前,先将Yaml文件中的数据结构在c#中进行定义,以便后面更好的读取。这里对这四个类型进行举例(这里为了想看看这四个类型到Yaml文件的格式是什么样子的)

永远年轻 1587

springsecurity+OAuth2.0-第12章:分布式认证授权案例-网关搭建*(含zuul前置过滤器)9

一 网关作用 网关整合 OAuth2.0 有两种思路: 1.一种是认证服务器生成jwt令牌, 所有请求统一在网关层验证,判断权限等操作; 2.另一种是由各资源服务处理,网关只做请求转发。 本案例就是API网关作为OAuth2.0的资源服务器角色,实现接入客户端权限拦截、令牌解析并转发当 前登录用户信息(jsonToken)给微服务,这样下游微服务就不需要关心令牌格式解析以及OAuth2.0相关机制了。 API网关在认证授权体系里主要负责两件事: (1)作为OAuth2.0的资源服务器

健康平安的活着的专栏 1907

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025 (以YOLO26最新目标检测模型为基础,C3k2融合SEFN空间增强前馈网络模块改进Backbone)

2502_91881744的博客 237

从cookie/session和token的角度来认识一下spring security oauth

项目源码地址https://github.com/nieandsun/security

nrsc 5148

基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端

【代码】基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端。

weixin_42300449的博客 165

从苏宁电器到卡巴斯基第02篇:我的本科时光(中)

怎么还分班了呢? 大概是在大二第二学期的时候吧,学院突然通知我们要分班。因为我们目前所有学生都是属于工商管理专业的,而从下个学期开始,就要分为会计、市场营销以及工商管理这三个方向。这还真是打了我一个措手不及,我都不知道还有分班这一回事。不过也没关系,我继续选择我的工商管理就好了。不过,在实际的选择结果上,像会计和工商管理这种学科,选的人自然是占了绝大多数,而选择市场营销的,大概也就是十

Gleam的专栏 9604

回顾:oauth2和 spring cloud alibaba gateway 整合

一、oauth2认证中心:登录用户进行认证,生成token, 同时定义受保护的api服务 (一)oauth2的四种认证模式:授权码模式,简化模式,密码模式,客户端模式。其中授权码模式和密码模式用的最多。 A.OAuth2授权码模式: 我们进入一些第三方应用程序时,无需注册,只需要微信授权登录即可,对于我们的服务不需要存储用户的密码,只要存储认证平台返回的唯一ID和用户信息即可,这就是OAuth2常见的授权码模式,它的特点就是:利用第三方权威平台实现用户身份的认证,当然如果我们的公司里面很多微...

热水钟博客 2074

诊断数据库ODX标准协议ISO22901定义组成部分

综上所述,简略描述了ODX数据库中UML/XML/Text/Check rules具体功能以及详细内容。

Soly_kun的博客 907

SpringBoot +oAuth2+JWT+Spring Security认证配置

官网:https://jwt.io/这个过程就是无状态认证。令牌采用JWT格式即可解决上边的问题,用户认证通过后会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。拿到了jwt令牌下一步就要携带令牌去访问资源服务中的资源,项目各个微服务就是资源服务,比如:A服务,客户端申请到jwt令牌,携带jwt去B服务查询信息,此时B服务要对jwt进行校验,只有jwt合法才可以继续访问。

qq_41860765的博客 1388

YOLO126优化:损失篇 | AAAI 2025 | 一种基于尺度的动态(SD)损失,根据目标大小动态调整尺度和位置损失的影响,提高了网络检测不同尺度目标的能力

提出了一种基于尺度的动态(SD)损失,它根据目标大小动态调整尺度和位置损失的影响,提高了网络检测不同尺度目标的能力。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 443

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Tyr,主流登录认证都已实现

🎉基于Spring Boot2.7、Spring Security5.7、Spring Authorization Server 0.4等主流技术栈的登录认证方案。项目实现了普通的登录认证授权,OAuth2认证授权服务器和资源服务器,基于Token和Session两种方案的单点登录,基本满足常见的登录认证场景。 ✨✨点个star ➕关注更新。

Carroll的博客 642

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

springboot集成springSecurity 普通版(非oauth2)

学习springSecurity之前,首先要了解springSecurity能够干些什么事情?能够处理哪些东西? 参考 1、https://blog.youkuaiyun.com/qq_22172133/category_8615344.html 2、https://blog.youkuaiyun.com/wangooo/article/details/113922946写的很不错的 3、https://blog.youkuaiyun.com/weixin_38927257/article/details/10296...

qqzhengwei的专栏 708

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

spring security oauth2_SpringSecurity,oauth2.0,SpringSocial第三方登录及jwt验证(3)

上一篇跳转地址看知道:SpringSecurity,oauth2.0,SpringSocial第三方登录及jwt验证(2)​zhuanlan.zhihu.com下面讲的主要是token的生成,以及验证用户和验证用户权限的一些代码我们先来讲一下普通的token生成:首先就是要实现oauth2认证服务器,只要在类上加上@EnableAuthorizationServer这个注解即可,我们需要重新编写我...

weixin_39975366的博客 178

Spring Security 详解与实操第五节 JWT和Oauth2

令牌扩展:如何使用 JWT 实现定制化 Token? 上一讲我们详细介绍了在微服务架构中如何使用 Token 对微服务的访问过程进行权限控制,这里的 Token 是类似“b7c2c7e0-0223-40e2-911d-eff82d125b80”的一种字符串结构。显然,这种格式的 Token 包含的内容应该是很有限的,那么是否有办法实现更为丰富的 Token 呢?答案是肯定的。 事实上,在 OAuth2 协议中并没有明确规定 Token 具体的组成结构,而在现实应用中,我也不太建议你使用上一讲中我们用到的 T

fegus的博客 1412

令牌,token和jwt的关系///Bearer Token是什么//Authorization头中携带Bearer Token//BEARER TOKEN和普通token有什么区别

Token是一个更广泛的术语,涵盖了所有形式的身份验证或授权凭证。JWT是一种特殊的Token格式,特别适合于分布式系统中的安全信息交换。在实际应用中,当你听到“token”时,它可能是任何形式的令牌,但如果特指为JWT,则意味着遵循了特定的标准和格式来进行编码、签名或加密。JWT因其良好的特性而成为现代Web应用中最常用的Token类型之一,尤其是在OAuth 2.0和OpenID Connect协议中。Bearer Token(持有者令牌)

qq_43518966的博客 2178

hjr-SpringBoot:spring security oauth2

区分 认证使用的是 oauth2 授权使用的是 spring security JWT: 普通的oauth2颁发的就是一串随机hash字符串,jwt就是一种特殊格式的token,包含头部Header,载荷Payload,签名Signature。 模式 需要配置如下三步: (1)配置资源服务器 (2)配置认证服务器 (3)配置spring security oauth2分成了4种模式 (1)授权码模式(authorization code) (2)简化模式(implicit) (3)密码模式(resource

hjr的博客 339

认证授权单体及分布式

使用JWT可以实现无状态认证,什么是无状态认证?传统的基于session的方式是有状态认证,用户登录成功将用户的身份信息存储在服务端,这样加大了服务端的存储压力,并且这种方式不适合在分布式系统中应用。如下图,当用户访问应用服务,每个应用服务都会去服务器查看session信息,如果session中没有该用户则说明用户没有登录,此时就会重新认证,而解决这个问题的方法是Session复制、Session黏贴。JWT令牌的优点:1、jwt基于json,非常方便解析。

qq_45276167的博客 761

Spring Security和oauth2的关系

网上有很多SpringSecurity和oauth2的介绍,但是对于初学者来说,上手比较复杂,本篇从原理上梳理一下两者之间的联系和区别参见【SpringSecurity】基本功能介绍springsecurity的核心功能主要包括认证(你是谁)通过注解开启简单来说,就是需要登录,你需要输入用户名和密码,才能访问某个url。授权(你能干什么)不需要通过指定的开关开启,而是通过配置来增加授权规则来生效,不增加授权规则就不生效一种是同步session不需要再次输入用户名和密码。...

m0_67402341的博客 289

Spring Security Oauth2架构学习

目录 1.基本概念 2.授权码模式 3.密码模式 4.JWT加密令牌 5.SpringSecurityOauth2整合JWT 刷新令牌 1.基本概念 简介,Oauth协议为用户资源的授权提供了一个安全的,开放而又简易的标准,同时,任何第三方都可以使用Oauth认证服务,目前Oauth是2.0版本使用最为广泛. 分析一下网站使用vx认证的过程: 1.首先用户想访问资源,需要认证,使用第三方认证比如(vx,qq,新浪等等) 2.用户确认使用第三方认证,那么需要向对应的第三方

waooi的博客 3727

01-Spring Security框架的认证和授权测试

01-Spring Security框架的认证和授权测试

欢迎阅读我的博客 1211

单点登录---SSO (JWT分析)-----SpringSecurity + OAuth 2

什么是SSO 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便。但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多次登录,而且每个系统的账号都不一样,这对于运营人员来说,很不方便。于是,就想到是不是可以在一个系统登录,其他系统就不用登录了呢?这就是单点登录要解决的问题。单点登录英文全称Single Sign On,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。 普通认

delete_bug的博客 1076
上一篇: Spark on yarn时,yarn-client、yarn-cluster、client、cluster用法
下一篇: 自定义flink触发器注意事项
join_null
博客等级 码龄11年 25粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值