11.2SpringSecurity安全访问介绍在安全的开发之中,对于Rest服务提供者不可能被用户直接访问的,所以肯定需要一个rest客户端springboot进行调用,可是现在Rest提供者的服务上有了认证信息,那么该如何访问呢?
如果这个时候在Rest客户端上直接使用用户名和密码做加密处理,那么根本无法访问,此时会出现有401的错误代码,因为认证出现了错误 。是因为所有的认证的处理操作,应该以头信息的模式进行处理 。而后使用base64进行加密处理后才可以得到一个正确的访问路径 。
- 【microcloud-consumer-80】修改RestConfig配置类,在这个配置类上追加有新的bean配置项;
- 【microcloud-consumer-80】修改ConsumerDeptController配置类,在进行Rest访问的时候设置好这个头部的信息 。
String auth=“user:password”
byte[] encodeAuth =Base64.getEncoder().encode(auth.getbytes(Charset.forName(“US-ASCII”)))
String authHeader = “basic ”+ new String(encodeAuth);
headers.set(“Authorization”,”authHeader”);
在进行授权的头信息内容配置的时候加密的信息一定要与“Basic ”之间有一个空格 。
对于rest而言,在spring课程讲过,里面如果进行参数的传递,有各自方式,例如:各种页面的路径信息组成,如果要是传递复杂内容,建议你在整个处理的时候就去使用那些页面的参数传递模式 。
11.3 无状态Session/rest配置整个Rest项目中的一个问题所在,所有的Rest都是基于Http协议的应用,这种应用上所有的web容器一般都会提供有一个Session机制,也就是说每一个用户访问之后,如果该用户一直连接,则认为该用户一直被服务器保存状态,但微服务有可能并发访问几W或几十W人,那么如果所有的Session状态都被维护着?
- 【microcloud-provider-member-8001】现在修改Rest程序类,追加一个取得session id的方法
随后进行提供者的Rest连接访问,http://mldnjava:hello@dept-9=8001.com:8001/dept/sessionId:
- 在一个springCloud配置之中,默认是会保存有session状态的,而后如果用户有需要则可以根据“sessionCreationPolicy”枚举类进行不同的session状态设置,但是从整体的操作来说session最好设置为无状态(服务端不保存你的session状态) 。
Security:
Session:always(保存状态,服务器内存可能被占满)
Stateless(无状态)
不管你以后的项目或者支持类中是否有设置的无状态的问题,你最好都进行一下设置,否则你的Rest服务将受到严重的内存困扰,最严重的就是内存溢出 。
12.定义安全配置程序类在进行Rest服务开发的时候,为了保证安全所有的程序里面都需要进行Spring-Security安全认证处理,可是之前所进行的认证处理都是在application.yml配置文件完成的,这样配置明显不符合逻辑,如果你需要开发的微服务很多,这些微服务都要求使用统一的用户名和密码的时候就非常不方便了 。所以现在最简单的做法是进行统一的设置 。
- 创建一个microcloud-security的Maven模块
- 【microcloud-security】修改pom.xml配置文件
- 【microcloud-security】建立一个统一的安全配置类:
Public void config(HttpSecurity http)
{
//表示所有访问都必须进行认证处理后才能正常进行
http.httpBasic().add().authorizeRequest().anyRequest().fullyAuthenticated();
//所有的Rest服务一定要设置为无状态,以提升操作性能 。
http.sessionManager().sessionCreationPolicy(SessionCreation.Policy.STATELESS);
}
}
- 【microcloud-provider-member-8001】修改pom.xml配置文件,引入安全配置模块
<groupId>cn.mldn<groupId>
<artifactId>microcloud-security<artifactId>
<dependency>
5、【microcloud-provider-member-8001】删除掉application.yml中与安全有关的配置项 。
security:
Basic:
Enabled:true #启用springSecurity的安全配置项 。
User:
name:mldnjava #认证用户名
password:hello #认证密码
role: #授权角色
由于现在所写的安全处理类是在程序启动类的子包之中,应该可以自动扫描到 。
6访问地址:http://mldnjava@hello@dept-8001.com:8001/dept/sessionId
推荐阅读
- 基于.NET Core的Orchard Core框架出来了
- 用Python开发一个交互式网络和IP地址计算器
- JetPack现在都成了Android开发必备技能嘛?
- springcloud微服务架构开发实战:常见微服务的消费者
- 如何使用VSCode调试JS?
- API统一、干净,新型EagerPy实现多框架无缝衔接
- Docker 安装 Nginx
- 高性能无锁并发框架Disruptor,太强了
- FFmpeg的FFplay框架分析
- Mac 上安装 pyenv 使用多版本python开发项目
