Authentication概述
来源:互联网 发布:ubuntu开启samba服务 编辑:程序博客网 时间:2024/05/21 19:27
http://sishuok.com/forum/posts/list/7455.html
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 是互斥的——若其中一个为真则另一个为假,反之亦然
认证顺序
- Authentication概述
- Forms Authentication 概述
- Authentication
- Security Tutorials系列文章第二章:Forms Authentication概述
- 开启Authentication
- Gateway Authentication
- Kerberos Authentication
- ca authentication
- Digest authentication
- User authentication
- Hadoop Authentication
- mongoDB authentication
- Digest authentication
- OAuth Authentication
- authentication failure
- HTTP Authentication
- mongoDB authentication
- Lab4 Authentication
- Python3 str数组处理
- 自定义类型——结构体,枚举,联合
- 人脸识别的基本概念与阅读文章
- Django不能ip调试访问
- linux pinctrl驱动
- Authentication概述
- java高并发学习记录-死锁,活锁,饥饿
- AngularJS 学习
- 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
- 分布式作业 gossip模式
- 2018年 java面试跳槽必备
- cpp: ostream setf() 设置格式状态方法的初使用
- JVM —— Object Header(对象头)
- xgboost安装问题:动态库