zoukankan      html  css  js  c++  java
  • Apache Shiro java安全框架

    什么是Apache Shiro?

    Apache Shiro(发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。

    Shiro为解决下列问题(我喜欢称它们为应用安全的四要素)提供了保护应用的API:

    • 认证 - 用户身份识别,常被称为用户“登录”;
    • 授权 - 访问控制;
    • 密码加密 - 保护或隐藏数据防止被偷窥;
    • 会话管理 - 每用户相关的时间敏感的状态。

    Subject

    在考虑应用安全时,你最常问的问题可能是“当前用户是谁?”或“当前用户允许做X吗?”。当我们写代码或设计用户界面时,问自己这些问题很平常:应用通常都是基于用户故事构建的,并且你希望功能描述(和安全)是基于每个用户的。所以,对于我们而言,考虑应用安全的最自然方式就是基于当前用户。Shiro的API用它的Subject概念从根本上体现了这种思考方式。

    Subject一词是一个安全术语,其基本意思是“当前的操作用户”。称之为“用户”并不准确,因为“用户”一词通常跟人相关。在安全领域,术语“Subject”可以是人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。在代码的任何地方,你都能轻易的获得Shiro Subject,参见如下代码:

    获得Subject

    import org.apache.shiro.subject.Subject;
    import org.apache.shiro.SecurityUtils;
    ...
    Subject currentUser = SecurityUtils.getSubject();


    SecurityManager

    Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。

    那么,如何设置SecurityManager呢?嗯,这要看应用的环境。例如,Web应用通常会在Web.xml中指定一个Shiro Servlet Filter,这会创建SecurityManager实例,如果你运行的是一个独立应用,你需要用其他配置方式,但有很多配置选项。

    Subject的会话

    Session session = subject.getSession();
    Session session = subject.getSession(boolean create);

    会话的方法


    Session session = subject.getSession();
    session.getAttribute("key", someValue); 
    Date start = session.getStartTimestamp();
    Date timestamp = session.getLastAccessTime(); 
    session.setTimeout(millis); ...

    web.xml中的ShiroFilter

    <filter>
        <filter-name>ShiroFilter</filter-name>
        <filter-class>
             org.apache.shiro.web.servlet.IniShiroFilter
        </filter-class>
        <!-- 没有init-param属性就表示从classpath:shiro.ini装入INI配置 --> 
    </filter>
    <filter-mapping>
        <filter-name>ShiroFilter</filter-name>
        <url-pattern>/*</url-pattern> 
    </filter-mapping>










  • 相关阅读:
    Monkey测试
    第八周作业-说说本周项目工作中的情况
    第七周作业-谈谈各种文档
    第六周作业-UML在详细设计阶段的使用心得&&UML建模与软件开发过程模型
    第五周作业-Markdown的使用心得
    第四周作业-Java Web学习心得
    第三周作业-谈谈对编程规范的认识
    第二周作业-软件工作量的估计
    支付宝-发展史及其优缺点
    三种软件的特点分析
  • 原文地址:https://www.cnblogs.com/zhaoleigege/p/5809373.html
Copyright © 2011-2022 走看看