【问题标题】:Liferay Ldap User Authentication ErrorLiferay Ldap 用户认证错误
【发布时间】:2014-11-12 09:11:51
【问题描述】:

我正在尝试对来自 Ldap 服务器的用户进行身份验证。

这是我的 Ldap 用户:

我的管理员路径是 cn=admin,dc=ldap,dc=agem,dc=com

这是我的 Liferay 身份验证设置:

我可以连接到我的 ldap 服务器,并且可以通过测试操作从 ldap 获取用户。另外,多次重启 liferay,ldap 中的用户被复制到 liferay,我可以在 users 下看到这些用户。 但我无法使用此用户登录 liferay。我收到如下错误:

08:32:56,457 ERROR [http-bio-8180-exec-3][LDAPAuth:341] Problem accessing LDAP server com.liferay.portal.kernel.ldap.LDAPFilterException: Invalid filter cn=agem,cn=admin,dc=ldap,dc=agem,dc=com at com.liferay.portal.kernel.ldap.LDAPUtil.validateFilter(LDAPUtil.java:285)

我错过了什么?

【问题讨论】:

    标签: authentication liferay openldap


    【解决方案1】:

    检查给您异常的 Liferay 代码 (LDAPUtil.validateFilter),您可以看到以下代码:

                    if (!filter.startsWith(StringPool.OPEN_PARENTHESIS) ||
                           !filter.endsWith(StringPool.CLOSE_PARENTHESIS)) {
    
                            return false;
                    }
    

    所以,您遇到的问题是,身份验证过滤器需要以括号开头和结尾,您的过滤器以 cn=... 开头。此外,Liferay 从基本 DN 开始用户搜索,因此您应该只在身份验证过滤器中输入以下内容: (cn=@screen_name@) ,而不是完整的 DN

    【讨论】:

    • 这行得通!我认为我不需要带有单个过滤器参数的括号。谢谢!
    【解决方案2】:

    您的身份验证过滤器应该有点像这样

    (&(objectCategory=inetOrgPerson)(cn=@screen_name@))
    

    HTH

    【讨论】:

    • objectCategory 过滤什么?我只能使用 screenName 进行身份验证,但以后我可以需要这个?
    猜你喜欢
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 2012-08-13
    • 2011-04-19
    • 2012-07-16
    • 2012-08-17
    • 1970-01-01
    • 2012-09-10
    相关资源
    最近更新 更多