shiro 身份认证 流程图讲解

本文介绍了Shiro框架的身份验证机制,包括Authenticator和AuthenticationStrategy接口的功能。解释了SecurityManager、Authenticator、Authorizer和SessionManager等核心组件的作用,并详细描述了几种不同的验证策略。

这里写图片描述

在流程图3中,有Authenticator和AuthenticationStrategy2个接口。

Authenticator的职责是验证用户帐号,是Shiro API中身份验证核心的入口点:

它只有一个方法:

public AuthenticationInfo authenticate(AuthenticationToken authenticationToken)  
            throws AuthenticationException; 

如果验证成功,将返回AuthenticationInfo验证信息;此信息中包含了身份及凭证;如果验证失败将抛出相应的AuthenticationException实现。

Shiro 主要有四个组件

SecurityManager
典型的 Facade,Shiro 通过它对外提供安全管理的各种服务。
Authenticator
对“Who are you ?”进行核实。通常涉及用户名和密码。
这 个组件负责收集 principals 和 credentials,并将它们提交给应用系统。如果提交的 credentials 跟应用系统中提供的 credentials 吻合,就能够继续访问,否则需要重新提交 principals 和 credentials,或者直接终止访问。
Authorizer
身 份份验证通过后,由这个组件对登录人员进行访问控制的筛查,比如“who can do what”, 或者“who can do which actions”。Shiro 采用“基于 Realm”的方法,即用户(又称 Subject)、用户组、角色和 permission 的聚合体。
Session Manager
这个组件保证了异构客户端的访问,配置简单。它是基于 POJO/J2SE 的,不跟任何的客户端或者协议绑定。

身份认证流程图的描述:
这里写图片描述

SecurityManager接口继承了Authenticator,另外还有一个ModuleRealmAuthenticator实现,其委托给多个Realm进行验证,验证规则听过AuthenticationStrategy接口指定,默认提供的实现

FirstSuccessfulStrategy:只要有一个Realm验证成功即可,只返回第一个Realm身份验证成功的认证信息,其他的忽略
AtLeastOneSuccessfulStrategy:只要有一个Realm验证成功即可,和FirstSuccessfulStrategy不同,返回所有Realm身份验证从的认证信息
AllSuccessfulStrategy:所有Realm验证成功才算成功,且返回所有Realm身份验证成功的认证信息,如果有一个失败就失败了

ModularRealmAuthenticator默认使用AtLeastOneSuccessfulStrategy策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值