分布式整合之认证服务配置文件编写和测试|学习笔记

简介: 快速学习分布式整合之认证服务配置文件编写和测试

开发者学堂课程【Spring Security知识精讲与实战演示(三)分布式整合之认证服务配置文件编写和测试学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/732/detail/13073


分布式整合之认证服务配置文件编写和测试

 

认证服务配置文件编写和测试

之前的课程写了两个过滤器,但是没有配置文件这两个过滤器是没有作用的,此时需要提供Spring Security的配置文件,配置文件放在com.itheima.config里。

在原有webSecurityConfig.java文件中,在Spring Security配置信息下只需要如下内容:

public void configure(HttpSecurity http) throws Exception {

http.authorizeRequests()ExpressionInterceptUrlRegistry

.antMatchers(...antPatterns:"/product").hasAnyRole ...roles:"USBR")ExpressionUrlAuthorizationConfigurer<Hitt. .anyRequest().authenticated()ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegis

.and() HttpSecurity

.csrf() CsrfConfigurer<HttpSecurity>

.disable() HttpSecurity

此时,如果在最后输入.and返现不能输入,因为在Spring Security中,如果将csrf()放到最后一步,后续不能在做任何配置,故要将其放在如下位置:

public void configure(HttpSecurity http) throws Exception {

http.csrf() CsrfConfigurer<HttpSecurity>

.disable() HttpSecurity

.authorizeRequests()ExpressionInterceptUrlRegistry

.antMatchers(...antPatterns:"/product").hasAnyRole ...roles:"USBR")

.anyRequest()ExpressionUrlAuthorizationConfigurer<Hittpsed.authenticated()ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry

}

}

之后就可以在其中加入一些过滤器。

. and() HttpSecurity

.addFilter(newJwtLoginFilter(super.authenticationManager(),prop)) HttpSecurity

注:prop的对象不存在,要在 private UserService userService;下进行注入,输入@autowired  private PsaKeyProperties Prop

.addFilter(newJwtVerifyFilter(super.authenticationManager(),prop);

之后可以做优化性配置,分布式认证是不需要用session绘画的,要将其禁用。.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) ;

注:SessionCreationPolicy.STATELESS表示禁用session

配置的全部内容:

import …

@Configuration

@EnableWebSecurity

@EnableGlobalMethodSecurity(securedEnabled=true)

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired

private UserService userService,

@Autowired

private RsaKeyProperties prop;

@Bean

public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); }

//指定认证对象的来源

public void configure(AuthenticationManagerBuilder auth)throws Exception {

auth. userDetailsService(userService).passwordEncoder(passwordEncoder());

}

//Spring Security 配置信息

public void configure(HttpSecurity http) throws Exception {

http.csrf() CsrfConfigurer<HttpSecurity>

.disable() HttpSecurity

.authorizeRequests()ExpressionInterceptUrlRegistry

.antMatchers(...antPatterns:"/product").hasAnyRole ...roles:"USBR")

.anyRequest()ExpressionUrlAuthorizationConfigurer<Hittpsed.authenticated()ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry

.and() HttpSecurity

.addFilter(newJwtLoginFilter(super.authenticationManager(),prop)) HttpSecurity

.addFilter(newJwtVerifyFilter(super.authenticationManager(),prop);.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) ;

}

}

然后进行运行,可在如下图所示的窗口运行:

image.png

在上图可看到端口号是 :9001/,运行正常

接下来做认证操作,做认证操作需要借助工具,打开postman,地址是login

使用的是http://loaclhost:9001/login,点击body,注意在body里要选raw和json数据。

image.png

点击 send,出现

{

“msg”:“认证通过”

“code”:200

}

认证通过之后会在header里加"Authorization","Beaer "+token。在header里面会有如下token:

Bearer eylbGdOUSU21NMS9.eyJl1c2yloie wiaWRcijpudwWsLEFwidXNcnsbhbWcilpcimhpYWsiawsnccis.C.w0YKNxd2972PwiOom51bGisXCldGFOooNcloulistFwlemnAcENclpetwiaRlaeuneeQhiWRmFwifV1livianRpliaTWprNU1HRTFZek10WRObFITMDBZbUlLzTFRedN5UZ3RNV1xTVWpoaU1UUTRORGs0liwiZXnwjoNTY5NTY5MDgO12.TCXkisntIF3CDo2MANjejacVnysz03qxbN9y9yWmOcG1ym3tigTYz11PuyPICe7790dGWwmmjBR_JHBUumCR-yiPuHBpVUSKm3-MSqOR.J4czbgh4Kzd6-b4O06.1Huyb730xwub09do8VO S3Hlbu6HPps _lco-W0C3XPDwt 3 c. SmjurBsFzRAOMtYcmU_R2NCiR4zq25wCCulorurGcanOZox1EmsgpHli2boyC)YMyNlIUGPsOF3gtzowow-mU9xRyTnKxKgP2h6ibOdM018ru6bZAB5MPZ7QYmG_vbX(NNgzca_sA8FLWcplomyPe3oo9SeJ9w

利用这个token进行具体的请求访问:

image.png

一般请求是Get,访问http://localhost:9001/product/findAll,

Key值必须是Authorization,value是上文的header内容,访问之后显示查询成功。如果value中Bearer不变,其他改变,进行请求是没有任何提示的;当bearer改变,进行请求会显示“status”:403,因为在配置文件中没有判断token异常之后如何做。

相关文章
|
1月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
68 3
|
8天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
37 3
|
1月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
174 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
17天前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
17 1
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
26 2
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
61 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
1月前
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
55 3
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
2月前
|
数据采集 分布式计算 MaxCompute
MaxCompute 分布式计算框架 MaxFrame 服务正式商业化公告
MaxCompute 分布式计算框架 MaxFrame 服务于北京时间2024年09月27日正式商业化!
84 3
|
3月前
|
资源调度 Java 调度
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决