强化学习常用算法+实际应用,必须get这些核心要点

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

一、背景说明

目前市场上微服务之间涉及到相互调用的问题,在这个过程中为了验证安全性,需要采用鉴权方! A m 0 x式进行管理。目前主流的鉴权方式有Apache Shiro和Spring Security,在这里暂且不讨论Apache Shiro和Spring Security孰优孰劣。本文只讲解Spring Security的集成方式。同时,采用了OAuth 2.0的x z A Z管理方式,主要基~ 0 y 4 C于Token来q $ [ } 0 / b G实现鉴权过程。

Spring Cloud提供了对Spring Security的管理以及OAuth 2.0的集成,方便了我们进行整合使用。

二、项目结构

核心组件:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Api调用管理,主启动类:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

依赖的jar包,父工程:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

核心工程:

引入spring-security-oauth2-autoconfigu{ s ~ ~ + e @ Kre

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Security OAuth 2.0验证工具:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Boot与Spring Security的集成

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring ClouL _ .d管理Spring Security工具:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud管理OAuth 2.0:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

集成Redis及JDBC:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Social工具包:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

JWT工具:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

API工程:引入核心工程

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Boot启动工具及AOP:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

引入Spring Boot缓存工具:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

三、配置资源服务和认证服务

资源服务是用来配置用户名密码及手机号验G : % S T % # R 8证码等相关的用户认证方j v 4 e e Y *式的资源过滤路径,以及$ F 3 5 ; L _ T H静态资源路径和相关请求地址设置认证等功能。

认证服务是用来设* * T P置认证使用的方式,Redis/JWT等工具,以及客户端id(clientc I i + Id)和客户端密钥(clientSecret),只有验证通过的clientId和clientSecret才能获取Token。

我们使用继承AuthorizationServerConfigur8 u g E _ D OerAdapter的S) q Z y ysbAuthorizationServerConfig认证服务v M ^ G 3 ! p类:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

设置认证方式:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

过滤的静态资源文p q ( a I U 件:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

设置登录页:/form/token地址

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

设置手机认证及静态资源放开权限:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

四、通过用户名密码登录获取Token

我们可以正式使用Spring Security OAuth配置用户名和密码登录,也就是表单登录,Spring Security默认有Fz ; ; orm登录和Basic登录,我们已经在SsbResourV 0 p Ucb T 3eServerConfig类的configure方法上通o 8 y )过http.formLogin()设置了表单登录

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

也就是用户名密码登录。其中Spring Security已经实现了表单登录的封_ } C t S @ 2 j /装了,我们只需要设* t _ [ 2置登录成功之后返回的Token就行。我们创建一个t 6 # f _继承SavedRe, j { #questAwareAuthenticationSuccessHandler的SsbAuthenticationSuccessHandler实现类:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

设置OAuth Ta 8 , f 6 d % Ioken:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

加密工具:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

这样就可以成功的返回Token给前端,因此我们必须放开/form/token请求地址,我们已经在SsbResou3 i r d GrceServerConfig类的configure放开了,M W r ` 8 B r n已经设置了处理成功的a ; E } b G Y PssbAuthenticationSuccessHandler方法,失败处理的ssbAuthenticationFailurC ( 6 ; H eHandler处理过程:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

我们接下来创建基于UserDet( 3 V L U ! ) = AailsService的ApiUserDetailsService类,本来应该在这个类中查询从数据库T $ P f 4 9中的认证信息,在这里没有从数据库查询,代码如下:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

给与了admin、ROLE_USER权限

打开PostMan测试

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Authorization选择Basic Auth

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

填写密钥:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

密钥为

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

中设置的密钥

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

添加至Header

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

在Body中添加登录用户名、密码

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

发送请求,返回:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

表示认证成功r 1 7 ) 8 5 P * M

五、通过手机验证码登录获取Token

首先配置Redis:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

打开Redis:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

创建四个使用的类:

(1)基于Abs( + f $ w Z 1 ;tractAuthenticationToken的SmsCodeAuthenticationToken

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

(2)基C U / }于AbstractAuthenticationProcessingFilter的SmsCodeAuthenti( - M acationFilter

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

(3)基于AuthenticationProvider的SmsCodeAuthenticationProvider

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

(4)基于SecurityConfigurerAdapter的SmsCodeAuthenticationSecurityConfig

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

通过在资源管理器里面SsbResourceServerConfig添X * D ]

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

手机验证码接入

Ss o I a 2 1 J 2msCodeAuthenticationToken类的代码如下:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

SmsCodeAuthenticationFilter的代码如下:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

添加认证逻辑

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

SmsCodeAuthenticationProvider的代码如下:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

SmsCoa W ^ 7 j & fdeAuthenticationSecurityConfig的代码如下:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

接下来在PostMan里面

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

其Authorization:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

添加进Header:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

G J f t VBody里面:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

发起请求/ 0 y L n 9 C } v,控制台:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

PX 5 ( s 4 7 jostM_ { ! = K @ w Man里面:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

验证成功

六、将Token保存到Redis里面U ; 0 . Y

改造一下SsbAuthori y PzationServerConfig类,添加Redi, 7 l (s保存Token:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

将RedisTokenStoreCod 1 T % Fnfig新建一下:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

在application.u / K 8 } # Nproperties添z a d k加:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

我们测试下:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

Redis控制台:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

已存储至Redis

七、使用JWT生成Token

改造一下SsbAuthorizatioN K z D _ I c cnServerConfig

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

接着创建JwtTokenStoreConfig

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

并且需要创建一个基于ToS & )ken Handler,添加Token用户信息:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

设置一下applic2 A G H = 2 fation.propex , i i T Orties:

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

测试一下

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

八、本文总结

本文已经使用了Spring Security封装用户表单登录,我们需要使用手机号验证码登录只需要在此基础上集成编写即可

主要工作在SsbRe6 t Y x W DsourceServerConfig里面实现了

Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

完成鉴权验证

上一篇

巴萨历任主教练和梅西的关系

下一篇

唐朝第一个封王拜相的太监,接连欺负了三位皇帝,不是高力士

评论已经被关闭。

插入图片
返回顶部