“Acegi Security System 是一种功能强大并易于使用的替代性方案,使您不必再为 Java 企业应用程序编写大量的安全代码。虽然它专门针对使用 Spring 框架编写的应用程序,但是任何类型的 Java 应用程序都没有理由不去使用 Acegi。”
批:正合我意,偶未学信息安全,也想让系统安全,不用费很多劲编码,嘿嘿。
之前未学习过任何信息安全相关课程,所以不懂认证和授权的概念。
认证:确认用户是否确实是他们所宣称的身份。
授权:确认用户是否被允许一个特定的操作。
批:对用户身份认证,对用户的操作授权。
在Acegi安全系统中:
Principal:需要被认证的用户、系统或代理。
与其他安全系统的区别:无角色和用户组的概念。
七大关键的功能组件:
1 Authentication:包含Principal+Credential+Principal的授权信息or发起认证请求的客户的其他信息(如IP地址)。
2 ContextHolder:使用ThreadLocal储存Authentication对象的地方。
3 AuthenticationManager:用于认证ContextHolder的Authentication对象。
4 AccessDecissionManager:用于授权一个特定的操作。
5 RunAsManager:当执行特定操作时,用于选择性地替换Authentication 对象。
6 Secure Object拦截器:协调AuthenticationManager,AccessDecissionManager,RunAsManager和特定操作的执行。
7 ObjectDefinitionSource:包含了特定操作的授权定义。
偶需要进一步学习的:
1 Acegi 的架构模型及其安全过滤器(安全过滤器包含了在保护应用程序中将用到的大多数功能)
2 各个过滤器如何单独进行工作
3 如何组合各个过滤器
4 过滤器如何在一个企业安全实现中将各种功能从头到尾地链接起来
5 样例学习:基于 URL 安全系统的 Acegi 实现
更进一步(Acegi 的一些更高级的应用):
1 设计和托管访问控制策略
2 如何去配置 Acegi 以使用这些策略