Apache Shiro简介

做者:var dump
连接:https://zhuanlan.zhihu.com/p/23300328

最近要作一个基于Java C/S架构的项目,主要涉及权限管理这方面的东西。了解到Apache Shiro适合作这个。其官网上教程写的很好,打算把这些教程翻译成英文,这是第一篇。web

Apache shiro是什么?

Apache Shiro是一款强大、灵活的开源安全管理框架,以十分优雅的方式处理authentication(身份验证)、authorization(受权)、enterprise session(企业会话?)和cryptography()加密。算法

译者:一些在Shiro中的专用名词将不会译为中文,但译者会根据本身的理解在括号中给出中文释义。缓存

Apache Shiro的首要目标就是易于上手和容易理解。在软件中,安全管理有时会很是复杂、痛苦,但Apache Shiro会让它变得很是简单。下面是Apache Shiro能够作的事:安全

  • 鉴别用户身份
  • 管理用户权限,例如:判断用户是否有某一角色或用户是否被容许作某一操做
  • 即便没有web或EJB容器,也可使用session API
  • 在鉴别用户身份时、权限管理时或session生命周期内进行一些操做
  • 能够聚合一个或多个用户权限数据源而且以用户视图的形式统一表现出来
  • 实现了单点登陆功能(SSO)
  • 无需登陆即可实现“记住我”这一功能
    ...

那么Shiro能够用在哪些类型的应用中呢?小到命令行程序,大到企业级应用,Shiro几乎能够用在任何场景中。session

Apache Shiro的特点

Apache Shiro是一款应用普遍的安全管理框架,有不少特点。下图展现了Shiro的总体架构,本系列教程也会以此为根据组织顺序。多线程

 Shiro的目标是作好Authentication(身份鉴别)、Authorization(权限管理)、Session Management(会话管理)、Cryptography(加密)四个方面(这是软件安全的四大基石)。架构

  • Authentication(身份鉴别):有时指登陆,鉴别用户的身份
  • Authorization(权限管理):决定用户是否有权访问某物
  • Session Management(会话管理):即便不是web应用也不是EJB应用,仍然能够管理具备明确用户的session(会话)
  • Cryptography(加密):利用加密算法保证数据安全

为了支持更多的应用场景,Shrio还具备其余特点:并发

    • 支持web应用
    • 缓存:保证了安全管理的速度和效率
    • 并发:支持多线程应用
    • 测试:能够经过单元测试和集成测试验证程序的安全性
    • “Run As”:容许用户将某一身份赋予另外一用户(在一些行政管理软件中经常使用)
    • “Remember Me”:在Session(会话)期间记住用户身份,当只有强制要求登陆是才须要用户登陆