前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shiro身份认证之principals和credentials

Shiro身份认证之principals和credentials

作者头像
程序新视界
发布2021-02-01 12:02:59
2.1K0
发布2021-02-01 12:02:59
举报
文章被收录于专栏:丑胖侠丑胖侠

所谓的身份验证,即在应用中证明用自己的身份。一般比如提供如身份证ID、用户名等来证明是他本人,而用密码来验证。

在《02.Shiro认证与授权原理分析》中我们分析了Shiro验证和授权的基本原理。

其中,在验证的流程中涉及到2个概念:principals和credentials。

在shiro中,用户需要提供principals(身份)和credentials(证明)给shiro,从而应用能验证用户身份:

principals/身份

什么是principal?principals:身份,即主体的标识属性,如用户名、邮箱等,确保唯一即可。

在PrincipalCollection类中的getPrimaryPrincipal()方法中可以看到官方对principal的解释:

代码语言:javascript
复制
Object getPrimaryPrincipal();

该方法可获得一个principal的对象,通过返回类型为Object可以看出,principal可以为任意对象。

再看看该类上对返回结果的描述:

代码语言:javascript
复制
Returns the primary principal used application-wide to uniquely identify the owning account/Subject.

The value is usually always a uniquely identifying attribute specific to the data source that retrieved the account data. Some examples:
a UUID
a long value such as a surrogate primary key in a relational database
an LDAP UUID or static DN
a String username unique across all user accounts

通过官方注释可以看出principal通常有以下类型:

  • 1)可以是uuid
  • 2)数据库中的主键
  • 3)LDAP UUID或静态DN
  • 4)在所有用户帐户中唯一的字符串用户名。

也就是说这个值必须是唯一的。也可以是邮箱、身份证等值。

一个主体可以有多个principals,但只有一个Primary principals,一般是用户名/密码/手机号。

上面是通过PrincipalCollection类提供的方法进行获取principals,通常在使用之前通过构造方法将其传入:

代码语言:javascript
复制
public SimpleAuthenticationInfo(Object principal, Object credentials, String realmName) {
    this.principals = new SimplePrincipalCollection(principal, realmName);
    this.credentials = credentials;
}

principal添加到对应的集合中。添加的过程首先判断是否为Collection类型如果是就以添加集合的方式添加,如果不是就添加单个对象。

代码语言:javascript
复制
this.principals = new SimplePrincipalCollection(principal, realmName);

credentials/证明

credentials:证明/凭证,即只有主体知道的安全值,如密码/数字证书等。

最常见的principals和credentials组合就是用户名/密码了。

Shiro相关系列文章

《还在亲手写Filter进行权限校验?尝试一下Shiro吧》

《不解释,全网最全Shiro认证与授权原理分析》

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • principals/身份
  • credentials/证明
  • Shiro相关系列文章
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档