使用Acegi保护Java应用程序,第2部分: 使用LDAP目录服务器 - 编程入门网
器将请求、响应和过滤器链对象传递给 APF。
APF 使用取自请求对象的用户名、密码和其他信息创建一个身份验证标记。 APF 将身份验证标记传递给身份验证管理器。 身份验证管理器可能包含一个或多个身份验证提供者。每个提供者恰好支持 一种身份验证类型。管理器将检查哪一种提供者支持从 APF 接收到的身份验证 标记。 身份验证管理器将身份验证标记传递给适合该类型身份验证的提供者。 身份验证提供者从身份验证标记中提取用户名并将其传递到名为 user cache service 的服务。Acegi 缓存了已经进行过身份验证的用户。该用户下次登录时 ,Acegi 可以从缓存中加载他或她的详细信息(比如用户名、密码和权限),而 不是从后端数据存储中读取数据。这种方法使得性能得到了改善。 user cache service 检查用户的详细信息是否存在于缓存中。 user cache service 将用户的详细信息返回给身份验证提供者。如果缓存不 包含用户详细信息,则返回 null。 身份验证提供者检查缓存服务返回的是用户的详细信息还是 null。 使用Acegi保护Java应用程序,第2部分: 使用LDAP目录服务器(10)时间:2011-09-07 ibm Bilal Siddiqui从这里开始,身份验证处理将特定于 LDAP。如果缓存返回 null,LDAP 身份 验证提供者将把用户名(在步骤 6 中提取的)和密码传递给 清单 5 中配置的 authenticator bean。 authenticator 将使用在 清单 5 的 userDnPatterns 属性中配置的 DN 模 式创建用户 DN。通过从一个 DN 模式中创建一个 DN,然后将该 DN 和用户密码 (从用户请求中获得)发送到 LDAP 目录,它将逐一尝试所有可用的 DN 模式。 LDAP 目录将检查该 DN 是否存在以及密码是否正确。如果其中任何一个 DN 模 式可行的话,用户被绑定到 LDAP 目录中,authenticator 将继续执行步骤 15 。 如果任何一种 DN 模式都不能工作的话(这意味着在 DN 模式指定的任何位 置都不存在使用给定密码的用户),authenticator 根据 清单 6 配置的搜索查 询在 LDAP 目录中搜索用户。如果 LDAP 目录没有找到用户,那么身份验证以失 败告终。 如果 LDAP 目录查找到了用户,它将用户的 DN 返回到 authenticator。 authenticator 将用户 DN 和密码发送到 LDAP 目录来检查用户密码是否正 确。如果 LDAP 目录发现用户密码是正确的,该用户将被绑定到 LDAP 目录。 authenticator 将用户信息发送回 LDAP 身份验证提供者。 LDAP 身份验证提供者将控制权传递给 populator bean。 populator 搜索用户所属的组。 LDAP 目录将用户角色信息返回给 populator。 populator 将用户角色信息返回给 LDAP 身份验证提供者。 LDAP 身份验证提供者将用户的详细信息(以及用户业务角色信息)返回给 APF。用户现在成功进行了身份验证。 不论使用何种身份验证方法,最后三个步骤是相同的(步骤21、21 和 23) 。 配置拦截器 您已经了解了 APF 对用户进行身份验证的步骤。接下来是查看成功进行身份 验证的用户是否被授权访问所请求的资源。这项任务由 Acegi 的拦截过滤器 (Interceptor Filter,IF)完成。本节将向您展示如何配置 IF 来实现访问控 制策略。 回想一下在 第 1 部分的清单 7 中配置 IF 的步骤。拦截过滤器在资源和角 色之间建立映射,就是说只有具备必要角色的用户才能访问给定资源。为了演示 制造业企业中不同部门的业务角色,清单 9 向现有的 IF 配置添加了另外的角 色: 清单 9. 配置拦截过滤器
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |