shiro的面试题_综合分析面试题

shiro的面试题_综合分析面试题Shiro框架介绍shiro安全数据源有哪些:Shiro运行流程Shiro的优点比较SpringSecurity和Shiro简述Shiro的3个核心组件 1.Subject 2.SecurityManager 3.RealmsShiro认证过程Shiro授权过程Shiro如何自实现认证如何实现自实现授权如何配置在Spring中配置使用Shiro

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Shiro框架介绍
是一个轻量级的安全框架,主要提供了 授权、认证、加密、会话管理这几个功能。

shiro安全数据源有哪些:
1.数据库
2.静态ini文件
3.session

Shiro运行流程
比如一个登陆流程:
1、首先调用Subject.login(token)进行登录,他会委托给SecurityManager
2、SecurityManager负责真正的身份验证逻辑;它会委托给Authenticator进行身份验证;
3、Authenticator会把相应的token传入Realm,从Realm获取身份验证信息,如果没有就返回认证失败,有的话就继续执行操作。

Shiro 的优点
简单的身份认证, 支持多种数据源
非常简单的加密 API
对角色的简单的授权, 支持细粒度的授权(方法级)
支持一级缓存,以提升应用程序的性能;
内置的基于 POJO 企业会话管理, 适用于 Web 以及非 Web 的环境
不跟任何的框架或者容器捆绑, 可以独立运行

比较 SpringSecurity 和 Shiro
相比 Spring Security, Shiro 在保持强大功能的同时, 使用简单性和灵活性
SpringSecurity: 即使是一个一个简单的请求,最少得经过它的 8 个Filter
SpringSecurity 必须在 Spring 的环境下使用
初学 Spring Security, 曲线还是较大, 需要深入学习其源码和框架, 配置起来也较费力.

简述 Shiro 的3个核心组件
1.Subject
正与系统进行交互的人, 或某一个第三方服务.
所有 Subject 实例都被绑定到一个SecurityManager 上。

2.SecurityManager
Shiro 架构的心脏, 用来协调内部各安全组件, 管理内部组件实例, 并通过它来提供安全管理的各种服务.
当 Shiro 与一个 Subject 进行交互时, 实质上是幕后的 SecurityManager 处理所有繁重的 Subject 安全操作。

3.Realms
本质上是一个特定安全的 DAO. 当配置 Shiro 时, 必须指定至少一个 Realm 用来进行身份验证和授权.
Shiro 提供了多种可用的 Realms 来获取安全相关的数据. 例如关系数据库(JDBC), INI 及属性文件等.
可以定义自己 Realm 实现来代表自定义的数据源。

Shiro认证过程
①. 应用程序代码调用 Subject.login 方法,传递创建好的包含终端用户的 Principals(身份)和 Credentials(凭证)的 AuthenticationToken 实例

②. Subject 实例委托应用程序的 SecurityManager 通过调用securityManager.login(token) 开始真正的验证。
Subject 实例(通常为 DelegatingSubject或它的子类)

③. SubjectManager 接收 token,调用内部的 Authenticator 实例调用 authenticator.authenticate(token).Authenticator 通常是一个 ModularRealmAuthenticator 实例, 支持在身份验证中协调一个或多个Realm 实例

④. 如果应用程序中配置了一个以上的 Realm, ModularRealmAuthenticator 实例将利用配置好的AuthenticationStrategy 来启动 Multi-Realm 认证尝试。在Realms 被身份验证调用之前、调用期间、调用之后,AuthenticationStrategy 被调用使其能够对每个Realm 的结果作出反应。(AuthenticationStrategy都会被调用,对每个Realm 的结果作出反应)

⑤. 每个配置的 Realm 用来帮助看它是否支持提交的 AuthenticationToken. 如果支持, 那么支持 Realm 的 getAuthenticationInfo 方法将会伴随着提交的 token 被调用. getAuthenticationInfo 方法有效地代表一个特定 Realm 的单一的身份验证尝试。

Shiro授权过程
①. 应用程序或框架代码调用任何 Subject 的hasRole*, checkRole*, isPermitted*,或者checkPermission*方法的变体, 传递任何所需的权限

②. Subject 的实例 调用securityManager 的对应的方法.
Subject 实例(通常为 DelegatingSubject或它的子类)

③. SecurityManager 调用 org.apache.shiro.authz.Authorizer 接口的对应方法.默认情况下,authorizer 实例是一个 ModularRealmAuthorizer 实例, 它支持协调任何授权操作过程中的一个或多个Realm 实例

④. 每个配置好的 Realm 被检查是否实现了相同的 Authorizer 接口. 如果是, Realm 各自的 hasRole*, checkRole*,isPermitted*,或 checkPermission* 方法将被调用。

Shiro 如何自实现认证
Shiro 的认证过程由 Realm 执行,SecurityManager 会调用 org.apache.shiro.realm.Realm 的 getAuthenticationInfo(AuthenticationToken token) 方法。 实际开发中, 通常提供 org.apache.shiro.realm.AuthenticatingRealm 的实现类, 并在该实现类中提供 doGetAuthenticationInfo(AuthenticationToken token)方法的具体实现

如何实现自实现授权
实际开发中, 通常提供 org.apache.shiro.realm.AuthorizingRealm 的实现类,并提供 doGetAuthorizationInfo(PrincipalCollection principals) 方法的具体实现

如何配置在 Spring 中配置使用 Shiro
1、在 web.xml 中配置 Shiro 的 Filter
2、在 Spring 的配置文件中配置 Shiro
3、配置自定义 Realm:实现自定义认证和授权
4、配置 Shiro 实体类使用的缓存策略
5、配置 SecurityManager
6、配置保证 Shiro 内部 Bean 声明周期都得到执行的 Lifecycle Bean 后置处理器
7、配置AOP 式方法级权限检查
8、配置 Shiro Filter

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181921.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • webstorm 2022激活码_在线激活

    (webstorm 2022激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • xshell怎么连接vmware虚拟机_虚拟机centos7怎么联网

    xshell怎么连接vmware虚拟机_虚拟机centos7怎么联网XShell下载地址:https://en.softonic.com/download/xshell安装步骤默认即可,安装XShell完成后进行连接。文件——>新建配置连接信息在虚拟机中输入ifconfig即可获得主机IP信息,即inetaddr后面的数字。如果输出的主机IP是127.0.0.1,可以参考该篇博客解决这个问题。点击用户身份验证,输入用…

  • ubuntu下使用pip卸载包时出现Cannot uninstall scipy

    ubuntu下使用pip卸载包时出现Cannot uninstall scipyubuntu系统下使用pipuninstallscipy命令卸载包时,遇到报错信息为:ERROR:Cannotuninstall‘scipy’.Itisadistutilsinstalledprojectandthuswecannotaccuratelydeterminewhichfilesbelongtoitwhichwouldleadtoonlyapartialuninstall.最终发现通过以下方式可以解决:在/根目录下搜索“scip

    2022年10月17日
  • 安装vmware虚拟机步骤_如何安装vmware虚拟机

    安装vmware虚拟机步骤_如何安装vmware虚拟机一、基础介绍VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启

  • asp.net关于repeater嵌套repeater的方法「建议收藏」

    asp.net关于repeater嵌套repeater的方法「建议收藏」前台代码:                                               类别管理                                              ==名称==               操    作 请不要随意删除!&

    2022年10月13日
  • ip地址是什么意思_手机ip显示归属地还是显示本地

    ip地址是什么意思_手机ip显示归属地还是显示本地如何通过IP找到地址?在我们印象中,我们都知道可以通过IP地址找到某个人。但当我们细想一下,我们会发现其实IP地址与地理位置并不是直接相关的。那我们到底是如何通过IP地址找到地址的呢?答案是:通过自治系统(AutonomousSystem)。互联网是由不同网络组成的网络,自治系统是组成Internet的大型网络,连接到Internet的每台计算机或设备都连接到一个AS。而每一个自治系统都会有一个编码,我们称之为ASN。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号