Apache Shiro 介绍
什么是Apache Shiro?
Apache shiro 是一个强大而灵活的开源安全框架,可清晰地处理身份认证、授权、会话(session)和加密。
Apache Shiro最主要的初衷是为了易用和易理解,处理安全问题可能非常复杂甚至非常痛苦,但并非一定要如此。一个框架应该尽可能地将复杂的问题隐藏起来,提供清晰直观的API使开发者可以很轻松地开发自己的程序安全代码。
利用Apache Shiro你可以做这些事情:
验证用户身份;
对用户执行访问控制,如:
确定用户是否为指定的角色,
确定用户是否有权限做某件事情;
在任何环境下使用会话(session)API,甚至在没有web或者EJB容器的环境下;
影响在身份认证、访问控制或整个会话周期中的事件;
综合一种或多种用户安全数据的数据源并将这些数据源表现成一个单独的综合的用户'视图(view)';
允许单点登录(SSO)功能设计;
(译者注:SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。)
允许用户使用'记住我(Remember Me)'服务而无须登录。
……
还有更多--所有都整合在了综合合的易用的API中。
Shiro尝试在所有应用环境中实现这些目标--从简单的命令行程序到大型企业级项目,无须依赖第三方的框架、容器或服务,当然,项目的目标仍然是在这些环境中尽可能地整合,但它在任何环境下都可以拿来使用。
Apache Shiro 特征
Apache Shiro 是一个拥有很多特点的用途广泛的程序安全框架,下面的图表展示了Shiro的主要功能特点,本文(reference manual)也是按类似的方式组织的。
Shiro将目标集中于Shiro开发团队所称的“四大安全基石”-认证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography):
认证(Authentication):有时可看作为“登录(login)”,它是用户证明自己是谁的一个行为。
授权(Authorization):访问控制过程,好比决定“认证(who)”可以访问“什么(what)”.
会话管理(Session Management):管理用户指定的会话(sessions),甚至在非WEB或EJB程序中。
加密(Cryptography):使用加密算法保护数据更加安全,应用仍然非常简单。
还有一些附加的功能以在不同的程序环境中进行支持和加强,特别是:
Web支持:利用Shiro的web支持API可以很容易地实现web程序安全;
Caching:Caching在Apache Shiro的API中是一等公民,确保安全认证的动作快速而有效。
并发(Concurrency):Apache Shiro支持多线程;
测试(Testing):支持测试,帮助你开发单元和综合测试程序确保你的代码如你所预期的那样进行安全认证。
“Run As”:允许用户使用其他用户身份(如果被允许),这在执行某些管理角本中非常有用。
“Remember Me”:在整个会话周期中(sessions)记住用户的身份,用户只需要在程序强制要求登录的情况下才需要登录。