加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

shrio框架

发布时间:2020-12-14 06:35:48 所属栏目:Java 来源:网络整理
导读:这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【shrio框架】 大家好,我是IT修真院深圳分院第十二期学员,一

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【shrio框架】

大家好,我是IT修真院深圳分院第十二期学员,一枚正直纯洁善良的JAVA程序员。

今天给大家分享一下,修真院官网JAVA任务十的一个知识点:shrio

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献 ?????

8.更多讨论

1.背景介绍? ?

Apache Shiro 是一个安全框架,而他的作用:认证、授权、加密、会话管理、与Web集成、缓存等。今天要讲到的有两点,身份认证和权限管理。这里我们改用 SpringBoot Security + OAuth2 + JWT 三者结合来实现身份认证和权限管理。

2.知识剖析

? ? 2.1.Spring Security的主要作用:

? ? 2.2.spring Security配置

? ? 2.3.spring cloud oauth2 的认证流程

? ? 2.4.JWT的应用场景

? ? 2.5.JWT的认证流程

?? ? 2.1.Spring Security的主要作用:

1.认证,是认证主题的过程,通常是指可以在应用程序中执行操作的用户、设备或其他资源。?

2授权,是指决定是否允许已认证的主体执行某一项操作。

? ? 2.2.spring Security配置

1.首先是引入 Spring Security 相关依赖

2.编写一个配置类,这个类继承 WebSecurityConfigurerAdapter,并在该配置类上加上 @EnableWebSecurity 开启Web Security。

2.配置 HttpSecurity ,也就是配置认证规则,哪些URL需要认证,哪些不需要,以及需要拥有什么权限才能访问。

?3.开启方法级别的安全配置,需要通过在配置类上加上 @EnableGlobalMethodSecurity,方法级别上的安全控制 secureEnable、jsr250Enabled 和 prePostEnabled 这三种方法,其中用得最多的就是?prePostEnabled 。而?prePostEnabled ?包括 preAuthorize 和 PostAuthorize 两种方式,一般只用?preAuthorize 这种方式。

? ? 2.3.spring cloud oauth2 的认证流程

oauth2 ?是一个标准的授权协议,其允许不同的客户端通过认证和授权的形式来访问被其保护起来的资源。在认证和授权的过程中,主要有如下三个角色:

(1)服务提供方 Authorization Server

(2)资源持有者 Resource Server

(3)客户端 Client

oauth2 的认证流程如下 :

(1)用户(资源持有者)打开客户端,客户端访问用户授权。

(2)用户同意授权。

(3)客户端向授权服务器申请授权。

(4)授权服务器对客户端进行认证,也包括用户信息的认证,认证成功后授权给予令牌。

(5)客户端获取令牌后,携带令牌想资源服务器请求资源。

(6)资源服务器确认令牌正确无误,向客户端释放资源。

? ? 2.4.JWT的应用场景

在这之前先认识一下什么是 JWT,即JSON Web Token是一种开放的标准,JWT定义了一种紧凑且自定包含的标准,这个标准旨在将各个主体的信息包装为JSON对象。主体信息是通过数字签名进行加密和验证的。长是哟红HMAC算法或RSA(公钥、私钥的非对称性加密)算法对JWT进行签名,安全性很高。

(1)认证:这是使用JWT最常见的场景。一旦用户登录成功获取JWT后,后续的每个请求都携带该JWT。该JWT包含了用户信息、权限点等信息,根据该JWT包含的信息,资源服务可以控制该JWT可以访问的资源范围。

(2)信息交换:JWT是在各方之间安全传输信息的一种方式,JWT使用签名加密,安全性很高。

? ? 2.5.JWT的认证流程

客户端通过提供用户名、吗,密码箱服务器请求获取JWT,服务器判断用户名和密码正确无误之后,将用户信息和权限点经过加密以JWT的形式返回客户端。在以后的每次请求中,获取该JWT的客户端都需要携带该JWT,这样做的好处是以后的请求都不在需要通过权限任务服务再次来判断该请求用户以及该用户的权限了。

3.常见问题

3.1.oauth2存在什么缺陷?

答:缺陷就是每次请求都需要在资源服务内部远程调度 认证服务来验证 token的正确性,以及该token对用的用户所具有的权限,额外多了一次内部请求。

3.2.JWT的结构有哪几部分?

答:有三部分组成,分别是 Header(头),Payload(有效载荷),Signature(签名)

3.JWT 的几个特点?

(1)JWT 默认是不加密,但也是可以加密的。生成原始 Token 以后,可以用密钥再加密一次。

(2)JWT 不加密的情况下,不能将秘密数据写入 JWT。

(3)JWT 不仅可以用于认证,也可以用于交换信息。有效使用 JWT,可以降低服务器查询数据库的次数。

(4)JWT 的最大缺点是,由于服务器不保存 session 状态,因此无法在使用过程中废止某个 token,或者更改 token 的权限。也就是说,一旦 JWT 签发了,在到期之前就会始终有效,除非服务器部署额外的逻辑。

(5)JWT 本身包含了认证信息,一旦泄露,任何人都可以获得该令牌的所有权限。为了减少盗用,JWT 的有效期应该设置得比较短。对于一些比较重要的权限,使用时应该再次对用户进行认证。

(6)为了减少盗用,JWT 不应该使用 HTTP 协议明码传输,要使用 HTTPS 协议传输。

4.解决方案

5.编码实战

? ?

6.扩展思考

?????

7.参考文献 ?????

?????CSDN、百度百科

8.更多讨论

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院???

? “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

? ?这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。

快来与我一起学习吧~

腾讯视频:

PPT链接?视频链接

更多内容,可以加入IT交流群565734203与大家一起讨论交流

这里是技能树·IT修真院:,初学者转行到互联网的聚集地

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读