ldap 自定义目录_实施自定义用户注册表以合并LDAP服务器和活动目录?

ldap 自定义目录

您是否应该实施自定义用户注册表来帮助减轻对各种LDAP服务器的访问,以简化身份验证和组关联之类的安全任务? 这个问题的答案是“不”。

定制用户注册表的简单之处

从表面上看,实现自定义用户注册表很简单。 尽管一个应用程序服务器与另一个应用程序服务器之间略有不同,但是要实现自定义用户注册表,通常只需要编写一两个Java类,即可为六种左右的方法提供实现,这些方法可以执行诸如验证密码之类的操作,或者指示用户是否是给定组的一部分。 很容易。

例如,要为WebSphere创建定制用户注册表,这是需要实现的IBM WebSphere UserRegistry接口,以及需要编码的18种方法:

com.ibm.websphere.security.UserRegistry

1.初始化(java.util.Properties) 2. checkPassword(String,String) 3. mapCertificate(X509Certificate []) 4. getRealm 5. getUsers(String,int) 6. getUserDisplayName(String) 7. getUniqueUserId(String) 8. getUserSecurityName(String) 9. isValidUser(String) 10. getGroups(String,int) 11. getGroupDisplayName(String) 12. getUniqueGroupId(String) 13. getUniqueGroupIds(String) 14. getGroupSecurityName(String) 15. isValidGroup(String) 16. getGroupsForUser(String) 17. getUsersForGroup(String,int) 18. createCredential(String)

现在记住,这里的目标不是发明用于存储用户的系统。 在实现自定义用户注册表时,通常会有一个基础数据存储,应用程序正在其中连接。 因此,也许自定义用户注册表的目的是将对合并的LDAP服务器和具有用户信息的数据库系统的访问结合起来。 也许有三个不同的LDAP服务器需要合并访问。 这些系统中的每一个都已经具有更新密码或检查用户是否属于给定组的机制。 定制用户注册表的代码只需利用那些底层系统API 。 无需使用自定义用户注册表来重新发明轮子。 相反,您只需利用基础用户存储库已经提供的轮子。

听起来很简单,不是吗? 好吧,不是。 原因有很多。

持续的连接问题

首先,仅连接到各种不同的系统可能会很痛苦。 要获得凭据,绕过或至少通过已经存在的现有防火墙和安全系统进行身份验证,通常是头疼的事情。 仅获得到不同用户注册表系统的初始连接可能会很痛苦,更不用说在SSL证书过期或在网络拓扑中进行更改时保持连接。 保持连接性既是前期的也是长期的痛苦。

LDAP服务器优化

然后是优化的工作。 对单个用户存储库进行身份验证非常耗时,尤其是在高峰登录时间。 现在想象一下,通过if..then ... else语句以菊花链方式链接用户检查的三个或四个基础系统。 这将是足够长的时间来触发用户反抗。 因此,即使在实现了不同LDAP服务器和数据库的整合之后,仍然需要花费时间来确定如何优化访问。 有时,将用户ID映射到其注册系统的后备NoSQL数据库可以加快速度,尽管登录失败可能仍需要查询每个子系统。 性能优化已成为构建用户注册表的重要组成部分,因为每个用户在登录系统时都会花费一两秒钟的时间。

数据质量问题

如果有单独的子系统,那么确保数据质量也将成为重中之重。 例如,如果在两个子系统中存在相同的用户名(例如cmckenzie),那么哪个记录是真实的记录? 数据完整性问题可能导致奇异而困难的行为来进行故障排除。 例如,cmckenzie可能能够在使用率较低的时间登录,但在高峰使用时间却无法登录,因为在高峰使用时间,溢出请求将被路由到其他子系统。 即使问题可能源于LDAP服务器子系统中的数据质量问题,还是由开发人员维护自定义用户注册表代码的人才有望对问题进行故障排除和识别。

LDAP故障和用户注册表冗余

故障转移和冗余是另一个重要的难题。 切记,如果自定义用户注册表失败,则任何人都无法从任何地方登录任何内容。 对于任何开发软件的人来说,这都是巨大的责任。 当访问所有联机内容时,测试在给定的用户注册表关闭时代码的行为方式,或者弄清楚如何在异常的极端情况发生时使自定义用户注册表具有弹性,至关重要。

自定义用户注册表的所有权

从管理的角度来看,自定义用户注册表是拥有一项压力很大的技术。 只要登录过程缓慢,或者用户登录系统后出现问题,手指的第一个指点便是自定义用户注册表部分。 当发生登录,身份验证,授权或注册问题时,自定义用户注册表项的所有者通常首先必须证明不是问题所在。 当然,当然有时候应该归咎于自定义用户注册表组件。 也许证书已在服务器上更新,但没有与注册表同步,或者有人更新了本地用户注册表数据库中的列,或者对活动目录进行了更新? 定制用户注册表项取决于它所连接的基础基础结构的稳定性,而这在最佳情况下很难保证。

因此,是的,从表面上看,自定义用户注册表似乎是一个易于实施的软件,但是它随时都充满着危险和艰辛,因此从不建议这样做。 更好的选择是花时间将所有用户注册表整合到一个高性能LDAP服务器或活动目录中,并允许您的Oracle或WebSphere应用服务器的身份验证部分连接到其中。 对于中小型企业,这始终是首选。 这样,您可以集中精力使用托管用户记录的软件和硬件,以进行优化和调整以实现冗余和故障转移,而不用尝试用内部编写的代码来处理此类问题。 它还使您可以将矛头指向LDAP服务器或活动目录供应商,而不是在出现问题时将矛头指向内部开发团队。

不可避免地,尽管有所有给定的保留,有时还是需要自定义用户注册表,并且必须编写该注册表。 如果是这样,我祝您好运,希望您的问题很少。 但是,如果可以避免,正确的选择是不惜一切代价避免实施自己的自定义用户注册表的需要。

翻译自: https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Implementing-a-custom-user-registry-to-consolidate-LDAP-server-and-active-directories

ldap 自定义目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值