专栏首页丑胖侠Shiro身份认证之principals和credentials

Shiro身份认证之principals和credentials

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

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

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

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

principals/身份

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

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

Object getPrimaryPrincipal();

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

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

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,通常在使用之前通过构造方法将其传入:

public SimpleAuthenticationInfo(Object principal, Object credentials, String realmName) {
    this.principals = new SimplePrincipalCollection(principal, realmName);
    this.credentials = credentials;
}

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

this.principals = new SimplePrincipalCollection(principal, realmName);

credentials/证明

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

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

Shiro相关系列文章

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浅谈Apache Shiro权限模块及数据库设计

    写在最最最~~~前面的:由于Shiro框架在学习过程中假如没有一个实例Demo的参考,理解起来可能较为生涩难懂,所以笔者建议大家参考这个开源的项目:点我下载项目...

    关忆北.
  • Shiro系列 | 《Shiro开发详细教程》第二章:Shiro身份认证

    身份验证,即在应用中谁能证明他就是他本人。一般提供如他们的身份 ID 一些标识信息来表明他就是他本人,如提供身份证,用户名 / 密码来证明。

    码神联盟
  • 第四章:Shiro的身份认证(Authentication)——深入浅出学Shiro细粒度权限开发框架

      Authentication 是指身份验证的过程——即证明一个用户实际上是不是他们所说的他们是谁。也就是说通过提交用户的身份和凭证给Shiro,以判断它们是...

    MonroeCode
  • 第四章:Shiro的身份认证(Authentication)——深入浅出学Shiro细粒度权限开发框架

    Authentication概述 概述   Authentication 是指身份验证的过程——即证明一个用户实际上是不是他们所说的他们是谁。也就是说通过提交...

    MonroeCode
  • Shiro官方文档翻译——Java Authentication Guide with Apache Shiro

    Authentication is the process of identity verification– you are trying to prove ...

    逝兮诚
  • Shiro 实战(二)-身份认证1 认证原理

    认证就是进行身份确认的过程,也就是用户(对应Shiro中的Subject)需要提供证明来证实自己的身份 就像到自动取款机取款,持有银行卡的人就可以理解为此处的...

    JavaEdge
  • Apache Shiro权限框架理论介绍

    Apache Shiro是一个简单易用且强大而灵活的开源Java安全框架,以下简称Shiro。它干净利落地处理身份认证、授权以及企业会话管理和加密。Shiro拥...

    端碗吹水
  • 实际项目教学:身份/权限验证

    前几天给大家讲解了一下shiro,后台一些小伙伴跑来给我留言说:“一般不都是shiro结合jwt做身份和权限验证吗?能不能再讲解一下jwt的用法呢?“今天阿Q就...

    阿Q说代码
  • 基于SpringBoot打造在线教育系统(3)-- 登录与授权管理

    首先抱歉了各位,上一讲有一个错误,我已经在视频里面指出。 视频地址:https://www.bilibili.com/video/BV1CA411W7QV/ ...

    剽悍一小兔

扫码关注云+社区

领取腾讯云代金券