背景
我们组织中的另一个团队拥有完全配置的Active Directory服务器。我的团队构建了Ruby on Rails应用程序,我们根据他们的设置对Web应用程序的用户进行身份验证。由于一些新的安全策略正在实施,我们的开发机器将无法再直接与生产服务器通信。因此,我尝试在我的本地计算机上安装OpenLDAP(运行Fedora),并在我开发时使用它来验证用户身份。
设置
我已经能够完全配置OpenLDAP并插入记录。我的数据库看起来像:
dc=dev,dc=com
ou=Users
cn=User 1
在cn=User 1
条目中,我有一个名为accountName
的属性,我也有标准的userPassword
属性。作为测试,我下载了一个LDAP浏览器,当我指定完整的DN(cn =用户1,ou =用户,dc = dev,dc = com)时,我能够成功进行身份验证,并输入密码&#39 ; s在userPassword字段中。
问题
在我们的生产环境中,我必须提供的所有身份验证都是基本DN(dc = dev,dc = com),accountName
的值和相关密码。一旦我进行身份验证,我就可以访问用户1条目中的其他字段。使用accountName字段而不是完整DN进行身份验证需要做什么?
答案 0 :(得分:1)
这里有两件事需要解决:
首先,如果您的生产环境是ActiveDirectory而您无法从开发人员工作站访问它,请让负责AD环境的团队创建一个" dev"您可以访问的环境。
虽然LDAP的基本概念是标准化的,但AD和OpenLDAP之间的实现具体细节会有很大差异。
其次 - 大多数 ^软件只能使用用户名和密码对LDAP进行身份验证的方式是:
编辑:
^在某些情况下,提供的用户名是用户RDN的值组件,例如:如果我的登录名是stephenr,我的用户条目的RDN可能是cn = stephenr。如果是这种情况,并且所有用户条目具有相同的父对象,则可以通过构建字符串来创建要进行身份验证的DN(上面的步骤5),例如, " CN = {}的userid,OU =用户,DC =例如,DC = COM"其中{userid}替换为步骤1中提供的用户名值。