如何配置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?的主要内容,如果未能解决你的问题,请参考以下文章

身份验证是如何建立在 LDAP 上的?

如何为 LDAP 和 JDBC 配置 Spring?

用户如何在ldap服务器中创建用户后登录?

如何为我的 Web 应用程序构建 LDAP 集成?

无法使用 LDAP 登录/进入管理员模式

phabricator bot json 配置文件中“join”和“notification.channels”字段的使用