Apache Shiro 简介

Apache Shiro 简介

什么是Shiro

Apache Shiro是一个强大、灵活、开源的安全框架,它支持用户认证、权限控制、企业会话管理以及加密等。

Apache Shiro的第一个也是最重要的一个目标就是易于使用和理解。对应用程序做安全管理常常很复杂,甚至很痛苦,但是实际上完全可以避免。一个好的安全安全管理框架应该能够将复杂度隐藏在框架内部,对外提供简洁、直观的API,以便用户可以很简单的给应用添加安全控制。

下面是Apache Shiro能够提供给我们的一些特性:

  • 做用户身份认证;
  • 做访问权限控制,比如:
    • 这个用户是否被赋予了某个角色;
    • 这个用户是否有权限做某件事情;
  • 可以在任何环境下使用用户会话管理,即便没有web或者ejb容器也可以;
  • 可以整合多种类型的用户权限数据(比如关系数据库、LDAP等)到一个用户视图界面;
  • 支持单点登录(Single Sign On SSO);
  • 支持 记住秘密 服务。

Shiro尽力为各种应用程序的环境来达成以上的目标——从简单的命令行程序到大型企业应用,不要求支持任何第三方的框架、容器或者应用服务器。当然,Shiro会尽力与这些环境集成,但是Shiro的运行绝对不会依赖于这些环境。

Apache Shiro的特性

Shiro的特性很多,下图展示了Shiro的架构,从中我们可以了解到Shiro聚焦在哪里,并且我们这个系列的文档也是按照类似的结构来组织。

image.png

Shiro聚焦与应用程序安全领域的四大基石:认证、授权、会话管理和保密。

  • 认证,也叫作登录,用于验证用户是不是他自己所说的那个人;
  • 授权,也就是访问控制,比如用于决定“谁”是否有权限访问“什么”;
  • 会话管理,管理用户相关的会话,即使在非web和ejb的环境下也支持;
  • 保密,使用特性加密算法来保证用户数据的安全性,同时还要保证用起来够简单;

同时Shiro还提供了其他特性来在不同的应用程序环境下使用强化以上的四大基石:

  • Web支持:Shiro的web相关的API简化了web应用安全控制;
  • 缓存,在Shiro中,缓存是一等公民,用于保证用户认证和权限控制的性能;
  • 测试,支持可测试性,以便用户可以方便的对安全相关代码编写单元测试和集成测试;
  • 记住密码,可以跨会话的记住用户的身份信息,以便只有在一些强制性的场合才需要登录。
0%