• Shiro简介


    Apache Shiro 是java平台下的一个 安全框架。对比 Spring Security ,Apache Shiro简单好用。Spring Security相对复杂,但是实际工作中并不需要那么复杂的东西。所以使用 Shiro 的人也越来越多了。
     
    1,Shiro能做什么?
         ①验证用户来核实他们的身份
         ②对用户进行访问控制
         ③在任何环境下使用 Session API,即使没有 Web 或 EJB 环境
         ④聚集一个或多个 用户安全数据 的数据源,并作为一个单一的 复合用户 “视图”
         ⑤启用单点登录(SSO)登录
         ⑥为没有登录的用户启用“Remember me”服务
         ⑦为登录用户启用“Run As...”服务
      

         

         Authentication : 身份认证/登录。验证用户身份。
         Authorization : 授权/权限验证。验证已认证用户是否拥有某个权限或角色。
         Session Manager : 会话管理。会话可以是普通 JavaSE 环境,也可以是 JavaWeb 环境。Shiro内部实现了一套Session会话机制,在Web环境下默认使用Servlet容器的实现。
         Cryptography : 加密,如密码加密。
         Web Support : Web支持,可以非常容易的集成到Web环境。
         Caching : 缓存支持。缓存认证用户的权限/角色信息。
         Concurrency : shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限/角色自动传递过去。
         Tesing:提供测试支持。
         Run As:允许一个用户伪装为另一个用户(如果他们允许)的身份进行访问。
         Remember Me : 记住我,即一次登陆后,下次再来的话不需要登陆。
     
     
    2,Shiro是如何工作的?
         ①从外部来看Shiro的工作流程
      
              Subject:主体,代表了当前登录用户
              SecurityManager:安全管理器,Shiro核心组件。管理着所有Subject,并且所有安全相关的操作都会与该组件进行交互。
              Realm : 域,Shiro 从 Realm 中获取安全数据(用户,角色,权限),也就是说SecurityManager要验证用户身份,那么它必须从 Realm 中获取相应的数据进行比较以确定登录用户的身份是否合法。可以把 Realm 看成是 DataSource,即安全数据源。
              
              注意:Shiro不会维护用户/权限角色等信息,而是通过 Realm 让开发人员自己去注入。          
     
     
         ②从内部来看Shiro的工作流程
      
              Authenticator : 认证器,负责Subject的认证,这是一个扩展点,可以自定义实现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了。
              Authrizer : 授权器,或称访问控制器,用来决定Subject是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能。
              SessionDAO : DAO嘛,数据访问对象,用户会话的CRUD。可以自定义自己的 SessionDAO,通过JDBC将写到数据库,或者写到Redis缓存中。
              CacheManager : 缓存控制器,管理用户,角色,权限等数据的缓存;因为这些数据基本上很少去改变,放到缓存中可以提高访问的性能。
     
     
     
  • 相关阅读:
    bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
    CentOS 7下MySQL安装配置
    CentOS 7下设置DNS服务器
    MySQL Table is marked as crashed 解决方法
    supervisor使用
    Linux更改服务器Hostname
    在Linux中让打印带颜色的字
    php安装gearman扩展实现异步分步式任务
    GitLab的Gravatar头像服务不可用
    Nginx + tornado + supervisor部署
  • 原文地址:https://www.cnblogs.com/startcaft/p/6857355.html
Copyright © 2020-2023  润新知