JNDIRealm/Tomcat组/角色搜索作为已验证用户

JNDIRealm/Tomcat组/角色搜索作为已验证用户,tomcat,jndi,Tomcat,Jndi,如何让tomcat/jndi使用身份验证用户绑定到ldap进行组搜索 问题是: servlet的简单基于表单的Tomcat/jndiRealm/ldap身份验证 已设置,以便用户在绑定模式下正确进行身份验证 但是,ldap服务器不允许匿名绑定查看我感兴趣的组。当前正在进行身份验证的用户可以看到这些组 我不想使用connectionName和connectionPassword 我希望角色搜索由当前正在进行身份验证的用户完成,但即使在绑定模式下,wireshark也会显示在初始用户身份验证之后完成

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

问题是:

servlet的简单基于表单的Tomcat/jndiRealm/ldap身份验证 已设置,以便用户在绑定模式下正确进行身份验证 但是,ldap服务器不允许匿名绑定查看我感兴趣的组。当前正在进行身份验证的用户可以看到这些组 我不想使用connectionName和connectionPassword 我希望角色搜索由当前正在进行身份验证的用户完成,但即使在绑定模式下,wireshark也会显示在初始用户身份验证之后完成匿名绑定

可行的变通办法,但不是我想要的:

使用可以查看组的用户的connectionName和connectionPassword 为领域设置commonRole 我无法控制ldap服务器

从我的非工作服务器.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}" />

如果您对LDAP服务器没有任何控制权,并且Tomcat的JNDIRealm实际上就是这样运行的,那么除了使用连接名/密码之外,您似乎别无选择。检查JNDIRealm源代码很容易:它不是一个大文件。

谢谢-你当然是对的。这就是jndirealm的工作原理。我现在正试图找出如何用我自己的类替换jndirealm类,该类使用用户凭据重新绑定以执行组查找。没有“存储”这些凭证。。。。嗯……安迪,这相对容易。只需使用JAASRealm而不是jndiream来配置Tomcat,并编写自己的LoginModule和登录配置文件。