第四章:Shiro的身份认证(Authentication)
来源:互联网 发布:淘宝联盟怎么拿返利 编辑:程序博客网 时间:2024/05/20 00:52
Authentication概述
Authentication 是指身份验证的过程——即证明一个用户实际上是不是他们所说的他们是谁。也就是说通过提交用户的身份和凭证给Shiro,以判断它们是否和应用程序预期的相匹配。
1:Principals(身份):是Subject 的‘identifying attributes(标识属性)’。比如我们登录提交的用户名。
2:Credentials(凭证):通常是只被Subject 知道的秘密值,它用来作为一种起支持作用的证据,此证据事实上包含着所谓的身份证明。比如我们登录提供的密码
1. 收集Subjects 提交的Principals(身份)和Credentials(凭证);
2. 提交Principals(身份)和Credentials(凭证)进行身份验证;
3. 如果提交成功,则允许访问,否则重新进行身份验证或者阻止访问。
认证样例
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
token.setRememberMe(true);
样例使用UsernamePasswordToken 来支持最常见的用户名/密码的身份验证方法。这是Shiro的org.apache.shiro.authc.AuthenticationToken 的接口,是Shiro 代表提交的Principals(身份)和Credentials(凭证)的身份验证系统所使用的基本接口的一个实现。
Subject currentUser = SecurityUtils.getSubject();
currentUser.login(token);
如果认证成功,会没有返回,也没有例外,通过。
如果认证失败,会拋出例外,你可以在程序中捕获并处理,如下示例:
try {
currentUser.login(token);
} catch ( UnknownAccountException uae ) { …
} catch ( IncorrectCredentialsException ice ) { …
} catch (LockedAccountException lae ) { …
} catch (ExcessiveAttemptsException eae ) { …
} … catch your own …
currentUser.logout();
当你调用logout,任何现有的Session 都将会失效,而且任何身份都将会失去关联(例如,在Web 应用程序中,RememberMe cookie 也将被删除)。在Subject 注销后,该Subject的实例被再次认为是匿名的,当然,除了Web 应用程序。
注意:由于在Web 应用程序记住身份往往是依靠Cookies,然而Cookies 只能在Response 被committed 之前被删除,所以强烈建议在调用subject.logout()后立即将终端用户重定向到一个新的视图或页面。
这样能够保证任何与安全相关的Cookies 都能像预期的一样被删除。这是HTTP cookies 的功能限制,而不是Shiro的。
Remembered和Authenticated
一个记住我的Subject 不是匿名的,是有一个已知的身份ID(也就是subject.getPrincipals()是非空的)。但是这个被记住的身份ID 是在之前的session 中被认证的。如果subject.isRemembered()返回true,则Subject 被认为是被记住的。
一个已认证的Subject 是指在当前Session 中被成功地验证过了(也就是说,login方法被调用并且没有抛出异常)。如果subject.isAuthenticated()返回true 则认为Subject 已通过验证。
Remembered 和Authenticated 是互斥的——若其中一个为真则另一个为假,反之亦然
认证顺序
- 第四章:Shiro的身份认证(Authentication)
- Apache Shiro身份认证(Authentication)
- 【Shiro】Apache Shiro架构之身份认证(Authentication)
- 【Shiro】Apache Shiro架构之身份认证(Authentication)
- 【Shiro】Apache Shiro架构之身份认证(Authentication)
- Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication)
- Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication)
- Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication)
- Shiro 的身份认证
- 身份认证(shiro)
- Shiro身份认证的流程
- Shiro 的身份认证-Realm
- shiro身份认证(第一章)
- Oracle Proxy Authentication(代理身份认证)
- 身份认证(Authentication)
- 通过Shiro完成基础的身份认证
- 自学-Shiro的身份认证-05
- 2 Apache Shiro 身份认证(登录)
- 欧拉回路,欧拉路
- 极限安全新闻播报(04.09)
- android启动--深入理解init进程
- BottomSheetBehavior底部弹出窗口的用法
- sockjs-web实时通信应用解决方案
- 第四章:Shiro的身份认证(Authentication)
- 【剑指offer系列】 从上往下打印二叉树___23
- no_merge/merge vs no_unnest/unnest
- 【SASS】 一个Opacity混合器(外加如何让背景透明 文字不透明)
- Android -- SurfaceFlinger 概要分析系列
- 【Android基础】电话拨号器
- Servlet监听器示例
- java实现寻路
- 扫码登录流程