沐鸣注册平台官网实现自定义用户注册中心来合并LDAP服务器和活动目录?

您是否应该实现一个自定义用户注册中心,以帮助减轻对各种LDAP服务器的访问,从而简化身份验证和组关联等安全任务?这个问题的答案是一个响亮的“不”。沐鸣注册平台官网
自定义用户注册表的简单之美
从表面上看,实现自定义用户注册中心非常简单。虽然略有不同从一个应用程序服务器,实现一个自定义用户注册表,你通常只需要写一个或两个Java类,它提供了一个实现半打左右的方法做事情像验证密码,或指示用户是否给定组的一部分。peasy很容易。
例如,要为WebSphere创建自定义用户注册表,这里是需要实现的IBM WebSphere UserRegistry接口,以及您需要编码的18种方法:沐鸣平台
com.ibm.websphere.security.UserRegistry
- 初始化(java.util.Properties)
- checkPassword(字符串,字符串)
3.mapCertificate (X509Certificate [])
- getRealm
- getuser (String、int)
- getUserDisplayName(字符串)
- getUniqueUserId(字符串)
- getUserSecurityName(字符串)
- isValidUser(字符串)
- getGroups (String、int)
- getGroupDisplayName(字符串)
- getUniqueGroupId(字符串)
- getUniqueGroupIds(字符串)
- getGroupSecurityName(字符串)
- isValidGroup(字符串)
- getGroupsForUser(字符串)
- getUsersForGroup (String、int)
- createCredential(字符串)
现在请记住,这里的目标不是发明一个存储用户的系统。在实现自定义用户注册中心时,通常有一个应用程序正在连接的底层数据存储。因此,自定义用户注册中心的目的可能是将对组合LDAP服务器和具有用户信息的数据库系统的访问组合起来。或者可能有三个不同的LDAP服务器需要进行合并访问。每个系统都有更新密码或检查用户是否属于给定组的机制。自定义用户注册表的代码只需利用这些底层系统的api即可。不需要重新发明自定义用户注册表。相反,您只需利用底层用户存储库已经提供的工具即可。
听起来很简单,不是吗?嗯,它不是。原因有很多。沐鸣开户
连通性的担忧
首先,仅仅连接到各种不同的系统就可能是一种痛苦。首先要解决的问题是获取凭证,绕过或至少通过现有的防火墙和安全系统进行身份验证。仅仅获得到不同用户注册中心系统的初始连接就可能是一件痛苦的事情,更不用说在SSL证书过期或网络拓扑结构发生更改时维护连接性了。保持网络连接既是一种预先的痛苦,也是一种长期的痛苦。
LDAP服务器的优化
然后是优化工作。针对单个用户存储库进行身份验证非常耗时,尤其是在登录高峰时。现在,假设有三到四个底层系统,在这些系统上,用户检查被连接到if..然后……其他的语句。这将是一个足够长的滞后引发用户反抗。因此,即使在合并了不同的LDAP服务器和数据库之后,仍然需要投入时间来确定如何优化访问。有时候,如果有一个后备的NoSQL数据库,其中用户id被映射到他们注册的系统,可以加快速度,尽管登录失败仍然可能需要查询每个子系统。性能优化成为构建用户注册中心的一个重要部分,因为每个用户在登录系统时都会注意到这一点。
数据质量问题
如果存在单独的子系统,那么确保数据质量也将成为首要任务。例如,如果相同的用户名(如cmckenzie)存在于两个子系统中,那么哪个子系统是真实记录?数据完整性问题可能会导致难以诊断的异常行为。例如,cmckenzie可能能够在低使用时间登录,但不能在高峰使用时间登录,因为在高峰使用时间,溢出请求被路由到不同的子系统。尽管这些问题可能源于LDAP服务器子系统中的数据质量问题,但是维护自定义用户注册表代码的开发人员将负责对问题进行故障排除和识别。