一、认证原理

1、subject(主体)请求认真,调用subject.login(token)

2、SecurityManager (安全管理器)执行认证

3、SecurityManager通过ModularRealmAuthenticator进行认证。

4、ModularRealmAuthenticator将token传给realm,realm根据token中用户信息从数据库查询用户信息(包括身份和凭证)

5、realm如果查询不到用户给ModularRealmAuthenticator返回null,ModularRealmAuthenticator抛出异常(用户不存在)

6、realm如果查询到用户给ModularRealmAuthenticator返回AuthenticationInfo(认证信息)

7、ModularRealmAuthenticator拿着AuthenticationInfo(认证信息)去进行凭证(密码 )比对。如果一致则认证通过,如果不致抛出异常(凭证错误)。

二、授权原理

1、对subject进行授权,调用方法isPermitted("permission串")

2、SecurityManager执行授权,通过ModularRealmAuthorizer执行授权

3、ModularRealmAuthorizer执行realm(自定义的CustomRealm)从数据库查询权限数据调用realm的授权方法:doGetAuthorizationInfo

4、realm从数据库查询权限数据,返回ModularRealmAuthorizer

5、ModularRealmAuthorizer调用PermissionResolver进行权限串比对

6、如果比对后,isPermitted中"permission串"在realm查询到权限数据中,说明用户访问permission串有权限,否则 没有权限,抛出异常。

转载于:https://www.cnblogs.com/zhangxianming/p/8656851.html

shiro 认证和授权原理相关推荐

  1. OAuth2.0认证和授权原理

     什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和 ...

  2. Shiro认证和授权

    shiro介绍 什么是shiro Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. ...

  3. shiro认证与授权

    1.shiro认证 1.1.身份验证 身份验证:一般需要提供如身份ID等一些标识信息来表明登录者的身份,如提供email,用户名/密码来证明. 在shiro中,用户需要提供principals(身份) ...

  4. Shiro认证和授权的思路

    认证 (1)获取当前的Subject,调用SecurityUtils.getSubject(): (2)测试当前的用户是否已经被认证,即是否已经登录.调用Subject的isAuthenticated ...

  5. shiro认证与授权:自定义realm

    [main] #声明realm permReam=cn.learn.shiro.PermissionRealm #注册realm到securityManager中 securityManager.re ...

  6. shiro认证与授权:基于ini的用户授权

    [users] #用户名=密码,角色名 zhangsan=123456,role1,role2 lisi=123456,role2 [roles] #角色 #角色名=权限列表 role1=user:s ...

  7. Springboot整合shiro基于url身份认证和授权认证

    你还不会shiro吗? 前奏 shiro核心配置文件(rolesFilter可选). 身份认证 多表登录源如何操作? 授权管理 如何解决界面多角色/资源问题 访问效果 权限管理在日常开发中很重要,所以 ...

  8. SSM整合Shiro进行登陆认证和授权详细配置

    本篇博客将进行详细介绍Shiro+Spring+SpringMVC+Mybatis+数据库整合并进行登陆认证和授权详细配置. SSM的整合可以参考:https://blog.csdn.net/a745 ...

  9. mysql url认证_Springboot+shiro基于url身份认证和授权认证

    你还不会shiro吗?前奏 shiro核心配置文件(rolesFilter可选). 身份认证 多表登录源如何操作? 授权管理 如何解决界面多角色/资源问题 访问效果 权限管理在日常开发中很重要,所以硬 ...

  10. shiro安全框架初识--shiro简介、认证与授权

    1.shiro安全框架 1.1.什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只 ...

最新文章

  1. Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputFormat的map任务数量)...
  2. 【Groovy】构建工具 ( 构建工具引入 | Gradle 构建工具作用 | 传统的依赖管理 )
  3. 四旋翼飞行器旋转矩阵公式推导!
  4. Python容器类型公共方法汇总
  5. 为什么Map桶中个数超过8才转为红黑树
  6. CG CTF WEB AAencode
  7. java 中Lock的使用
  8. docker安装教程-centos
  9. oracle事务重要属性,Oracle中的事务(2)--属性和隔离级别
  10. LeetCode Assign Cookies
  11. Django中的request和response
  12. mysql中的union用法以及子查询综合应用
  13. 子类调用父类的构造函数几种情况
  14. echarts设置之stack参数
  15. win7共享xp打印机_打印机共享那些事儿……
  16. 中国农业银行计算机专业笔试题,中国农业银行笔试题库
  17. 硬件设计3---什么是电容?
  18. OI-wiki 算法基础 模拟 NOIP2014 生活大爆炸版石头剪刀布 python
  19. 深入Flutter(四) Infinite scrolling -- 无限滚动
  20. pubmedy安装不聊了_Pubmedy:显示影响因子+引用数、Sci-hub全文下载的浏览器扩展...

热门文章

  1. JDBC学习(二、操作JDBC步骤,及相关API)
  2. Centos7 Kubernetes(k8s) 开发服务器(单服务器)部署 elasticsearch 搜索引擎
  3. Filebeat 日志收集器 安装和配置
  4. zookeeper和PHP zookeeper和kafka 扩展安装
  5. wamp怎么安装mysql服务器_使用WAMPServer套件可安装Apache服务器和MySQL服务器
  6. Subarray Sum K
  7. MapReduce实战(三)分区的实现
  8. 关于集合和字符串的互转
  9. Socket编程--TCP服务端注意事项
  10. linux中配置Java环境