zoukankan      html  css  js  c++  java
  • shiro 认证和授权原理

    一、认证原理

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

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

    3、SecurityManager通过ModularRealmAuthenticator进行认证。

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

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

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

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

    二、授权原理

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

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

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

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

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

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

  • 相关阅读:
    非循环单链表节点的操作
    链表每一个节点的数据类型该如何表示
    链表的定义、确定一个链表需要几个参数?
    typedef的用法
    连续存储数组的算法(包含数组倒置、冒泡排序……)
    跨函数使用内存案例
    malloc()动态分配内存概述
    结构体
    指针和数组
    C#基础知识之dnSpy反编译
  • 原文地址:https://www.cnblogs.com/zhangxianming/p/8656851.html
Copyright © 2011-2022 走看看