【问题标题】:JNDIRealm/Tomcat group/role search as authenticated userJNDIRealm/Tomcat 组/角色搜索为经过身份验证的用户
【发布时间】:2012-07-10 10:43:59
【问题描述】:

如何使 tomcat/jndi 使用身份验证用户绑定到 ldap 以进行组搜索?

问题:

  • servlet 的基于 FORM 的简单 Tomcat/jndiRealm/ldap 身份验证
  • 已经设置,以便用户确实正确地进行身份验证(绑定模式)
  • 但是,ldap 服务器不允许匿名绑定查看我感兴趣的组。current-authenticating-user 可以查看这些组
  • 我不想使用 connectionName 和 connectionPassword

我希望由当前正在验证的用户完成角色搜索,但即使在绑定模式下,wireshark 也会显示在初始用户验证之后完成了匿名绑定。

可行的解决方法,但不是我想要的:

  • 使用可以查看组的用户的 connectionName 和 connectionPassword
  • 为领域设置 commonRole

(我没有控制 ldap 服务器)

来自我的(非工作)server.xml

<Realm className="org.apache.catalina.realm.JNDIRealm"
   connectionURL="ldap://localhost:389"
   userPattern="cn={0},ou=people,o=myO,dc=myDc,dc=com"
   roleBase="ou=groups,o=myO,dc=myDc,dc=com"
   roleName="cn"
   roleSearch="member={0}" />

【问题讨论】:

    标签: tomcat jndi


    【解决方案1】:

    如果您对 LDAP 服务器没有任何控制权,并且 Tomcat 的 JNDIRealm 确实如此,那么您似乎别无选择,只能使用连接名称/密码。检查 JNDIRealm 源代码很容易:它不是一个大文件。

    【讨论】:

    • 谢谢 - 你当然是对的。这 jndirealm 的工作原理。我现在正试图弄清楚如何用我自己的替换 jndirealm 类,该类 确实 与用户凭据重新绑定以进行组查找。没有“存储”这些凭据....嗯....
    • @Andy 这相对简单。只需使用 JAASRealm 而不是 JNDIRealm 配置 Tomcat,然后编写自己的 LoginModule 和登录配置文件。
    猜你喜欢
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2020-11-15
    相关资源
    最近更新 更多