作者:var dump
链接:https://zhuanlan.zhihu.com/p/23300328
最近要做一个基于Java C/S架构的项目,主要涉及权限管理这方面的东西。了解到Apache Shiro适合做这个。其官网上教程写的很好,打算把这些教程翻译成英文,这是第一篇。
Apache shiro是什么?
Apache Shiro是一款强大、灵活的开源安全管理框架,以十分优雅的方式处理authentication(身份验证)、authorization(授权)、enterprise session(企业会话?)和cryptography()加密。
译者:一些在Shiro中的专用名词将不会译为中文,但译者会根据自己的理解在括号中给出中文释义。
Apache Shiro的首要目标就是易于上手和容易理解。在软件中,安全管理有时会非常复杂、痛苦,但Apache Shiro会让它变得非常简单。下面是Apache Shiro可以做的事:
- 鉴别用户身份
- 管理用户权限,例如:判断用户是否有某一角色或用户是否被允许做某一操作
- 即使没有web或EJB容器,也可以使用session API
- 在鉴别用户身份时、权限管理时或session生命周期内进行一些操作
- 可以聚合一个或多个用户权限数据源并且以用户视图的形式统一表现出来
- 实现了单点登录功能(SSO)
- 无需登录便可实现“记住我”这一功能
...
那么Shiro可以用在哪些类型的应用中呢?小到命令行程序,大到企业级应用,Shiro几乎可以用在任何场景中。
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(会话)期间记住用户身份,当只有强制要求登录是才需要用户登录