如何配置phabricator登录使用ldap?
Posted
技术标签:
【中文标题】如何配置phabricator登录使用ldap?【英文标题】:How to config phabricator login use ldap? 【发布时间】:2017-01-22 13:48:01 【问题描述】:我已经迁移 Jenkins 使用 LDAP 登录,没有问题。 但是当我尝试迁移 phabricator 以使用 LDAP 时,我得到“用户名或密码不正确”。每次,我确信相同的用户名和密码可以登录詹金斯。我使用的是同一个 OpenLDAP 服务器,并且 LDAP 有一个只读 DN:cn=readonly,dc=my-company,dc=com。 Phabricator 配置列表如下:
允许:“允许登录” LDAP 主机名和端口:与我的 Jenkins 配置完全相同 基本专有名称:ou=user,dc=my-company,dc=com(而 Jenkins 根 DN 为 dc=my-company,dc=com) 搜索属性:空 始终搜索:未选中 匿名用户名:cn=readonly、dc=my-company、dc=com(与 Jenkins Manager DN 相同) 匿名密码:密码(与 Jenkins Manager 密码相同) 用户名属性:uid 实名属性:空 LDAP 版本:3
这已经阻止了我两天,我错过了什么吗?
谢谢你的回答~
【问题讨论】:
您提到您正在迁移,我认为这意味着您已经在 Phabricator 中拥有许多用户。我猜您对 Phabricator 用户名使用的格式与您对 LDAP 使用的格式相同。 Phabricator 可能正在查看现有用户并针对该用户检查密码。您将需要完成创建新用户的过程,以便 Phabricator 查询 LDAP 并设置该身份验证。 哦,我已经设置了一个新的 Phabricator 来测试 LDAP。新的 Phabricator 没有任何用户期望管理员。我计划在测试后迁移。 【参考方案1】:哦,我想通了。 Phabricator 与 Jenkins 有不同的 LDAP 登录机制。 Phabricator 总是将 LDAP 与用户的 DN 和密码绑定(以验证登录),然后搜索用户的 DN 本身。下面是LDAP登录代码中的注释:
// This is unusual (since the bind succeeded) but we've seen it at least
// once in the wild, where the anonymous user is allowed to search but
// the credentialed user is not.
// If we don't have anonymous credentials, raise an explicit exception
// here since we'll fail a typehint if we don't return an array anyway
// and this is a more useful error.
// If we do have anonymous credentials, we'll rebind and try the search
// again below. Doing this automatically means things work correctly more
// often without requiring additional configuration.
所以,LDAP 用户必须有搜索 acl,比如:
olcAccess: 1to *
by self write
by dn="cn=admin,dc=my-company,dc=com" write
by dn="cn=readonly,dc=my-company,dc=com" read
by users search
by * none
我没有“按用户搜索”选项,所以登录失败。
【讨论】:
以上是关于如何配置phabricator登录使用ldap?的主要内容,如果未能解决你的问题,请参考以下文章
phabricator bot json 配置文件中“join”和“notification.channels”字段的使用