快速业务通道

使用Acegi保护Java应用程序,第1部分: 架构概览和安全过滤器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
后接收控制权。

SIF 检查其他的过滤器是否在其处理过程中更改了安全上下文(比如,APF 可能将用户详细信息存储在安全上下文中)。如果是的话,它将更新会话对象中 的安全上下文。就是说在过滤器链处理过程中,对安全上下文的任何更改现在都 保存在会话对象中。

APF 如何对用户进行身份验证

图 3 展示了 APF 对用户进行身份验证所涉及到的步骤:

图 3. APF 对用户进行身份验证

APF 如何对用户进行身份验证

使用Acegi保护Java应用程序,第1部分: 架构概览和安全过滤器(9)

时间:2011-09-07 Bilal Siddiqui

现在仔细考虑以下这些步骤:

过滤器链中前面的过滤器向 APF 发送请求、响应和过滤链对象。

APF 使用从请求对象中获得的用户名、密码以及其他信息创建身份验证标记 。

APF 将身份验证标记传递给身份验证管理器。

身份验证管理器可能包含一个或更多身份验证提供者。每个提供者恰好支持 一种类型的身份验证。管理器检查哪一种提供者支持它从 APF 收到的身份验证 标记。

身份验证管理器将身份验证标记发送到适合进行身份验证的提供者。

身份验证提供者支持从身份验证标记中提取用户名,并将它发送给名为 user cache service 的服务。Acegi 缓存了已经进行过身份验证的用 户。该用户下次登录时,Acegi 可以从缓存中加载他或她的详细信息(比如用户 名、密码和权限),而不是从后端数据存储中读取数据。这种方法使得性能得到 了改善。

user cache service 检查用户的详细信息是否存在于缓存中。

user cache service 将用户的详细信息返回给身份验证提供者。如果缓存不 包含用户详细信息,则返回 null。

身份验证提供者检查缓存服务返回的是用户的详细信息还是 null。

如果缓存返回 null,身份验证提供者将用户名(在步骤 6 中提取)发送给 另一个名为 user details service 的服务。

user details service 与包含用户详细信息的后端数据存储通信(如目录服 务)。

user details service 返回用户的详细信息,或者,如果找不到用户详细信 息则抛出身份验证异常。

如果 user cache service 或者 user details service 返回有效的用户详 细信息,身份验证提供者将使用 user cache service 或 user details service 返回的密码来匹配用户提供的安全标记(如密码)。如果找到一个匹配 ,身份验证提供者将用户的详细信息返回给身份验证管理器。否则的话,则抛出 一个身份验证异常。

身份验证管理器将用户的详细信息返回给 APF。这样用户就成功地进行了身 份验证。

APF 将用户详细信息保存在 图 2 所示由步骤 3 创建的安全上下文中。

APF 将控制权传输给过滤器链中的下一个过滤器。

一个简单的 Acegi 应用程序

在本文中,您已经了解了很多关于 Acegi 的知识,所以现在看一下利用您目 前学到的知识能做些什么,从而结束本文。对于这个简单的演示,我设计了一个 样例应用程序(参见 下载),并对 Acegi 进行了配置以保护它的一些资源。

样例应用程序包含 5 个 JSP 页面:index.jsp、protected1.jsp、 protected2.jsp、login.jsp 和 accessDenied.jsp。

index.jsp 是应用程序的欢迎页面。它向用户显示了三个超链接,如图 4 所 示:

图 4. 样例应用程序的欢迎页面:

一个简单的 Acegi 应用程序

图 4 所示的链接中,其中两个链接指向了被保护的资源 (protected1.jsp 和 protected2.jsp),第三个链接指向登录页面 (login.jsp)。只有在 Acegi 发现用户没有被授权访问受保护的资源时,才会 显示 accessDenied.jsp 页面。

如果用户试图访问任何受保护的页面,样例应用程序将显示登录页面。当用 户使用登录页面进入后,应用程序将自动重定向到被请求的受保护资源。

用户可以通过单击欢迎页面中的第三个链接直接请求登录页面。这种情况下 ,应用程序显示用户可以进入系统的登录页面。进

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号