zoukankan      html  css  js  c++  java
  • Shiro简介

    1.简述

      Shiro是apache旗下一个开源安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证、权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。

      官网地址https://github.com/apache/shiro

      Shiro的优点

    • 功能强大、 简单、灵活, 不跟任何的框架或者容器绑定,可以独立运行。

      Shiro的缺点

    • 社区不灵活,本身并没有实现缓存,需自行实现。

      Shiro特点

    • 易于理解的 Java Security API。
    • 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等)。
    • 对角色的简单的签权(访问控制),支持细粒度的签权。
    • 支持一级缓存,以提升应用程序的性能。
    • 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境。
    • 异构客户端会话访问。
    • 非常简单的加密API。
    • 不跟任何的框架或者容器捆绑,可以独立运行。

    2.Shiro概要架构

      Shiro架构包含三个主要的理念

    • Subject:主体对象,负责提交用户认证和授权信息。
    • SecurityManager:安全管理器,负责认证,授权等业务实现。
    • Realm:领域对象,负责从数据层获取业务数据。

    3.Shiro详细架构

    核心对象:认证管理对象、授权管理对象、会话管理对象、缓存管理对象、加密管理对象、realm管理对象(领域对象:负责处理认证和授权领域的数据访问问题)。

    subject:与软件交互的一个特定实体(用户、第三方服务)。

    SecurityManager(安全管理):Shiro的核心,用来协调管理组件工作。

    Authenticator(认证管理):负责执行认证操作。

    Authorizer(授权管理):负责执授权检测。

    SessionManager(会话管理):负责创建并管理用户Session生命周期,提供一个强有力的Session体验。

    SessionDAO:代表SessionManager执行Session持久(CRUD)动作,它允许任何存储的数据挂接到Session管理基础上。

    CacheManager(缓存管理):提供创建缓存实例和管理缓存生命周期的功能。

    Cryptography(加密管理):提供了加密方式的设计及管理。

    Realms(领域对象):Shrio和应用程序安全数据之间的桥梁。

    4.shiro认证过程

      认证步骤说明

    • 首先调用Subject.login(token)进行登录,其会自动委托给SecurityManager,调用之前必须通过SecurityUtils.setSecurityManager()设置。
    • SecurityManager负责真正的身份验证逻辑,它会委托给Authenticator进行身份验证。
    • Authenticator才是真正的身份验证者,Shiro API中核心的身份认证入口点,此处可以自定义插入自己的实现。
    • Authenticator可能会委托给相应的AuthenticationStrategy进行多Realm身份验证,默认ModularRealmAuthenticator会调用AuthenticationStrategy进行多Realm身份验证。
    • Authenticator会把相应的token传入Realm,从Realm获取身份验证信息,如果没有返回或抛出异常表示身份验证失败了。此处可以配置多个Realm,将按照相应的顺序及策略进行访问。

    5.用户访问流程

  • 相关阅读:
    股票F10
    什么是盘口?
    CompletionPort
    WSAEvent
    SO_KEEPALIVE选项
    SO_LINGER
    shutdown和close的区别
    TIME_WAIT和CLOSE_WAIT状态区别
    什么是2MSL
    WSAStartup function
  • 原文地址:https://www.cnblogs.com/bl123/p/14216798.html
Copyright © 2011-2022 走看看