Java 在JSP中访问JNDIRealm?

Java 在JSP中访问JNDIRealm?,java,tomcat,ldap,jndi,Java,Tomcat,Ldap,Jndi,我已经在tomcats server.xml中配置了JNDIRealm <Realm className="org.apache.catalina.realm.JNDIRealm" connectionURL="ldaps://xxx" alternateURL="ldaps://xxx" userBase="xxx" userSearch="SamAccountName={0}"

我已经在tomcats server.xml中配置了JNDIRealm

    <Realm className="org.apache.catalina.realm.JNDIRealm"
           connectionURL="ldaps://xxx"
           alternateURL="ldaps://xxx"
           userBase="xxx"
           userSearch="SamAccountName={0}"
           userSubtree="true"
           roleBase="xxx"
           roleName="CN"
           roleSearch="(member={0})"
           connectionName="xxx"
           connectionPassword="xxx"
   />

我想在一些JSP文件中执行进一步的ldap查询(比如获取用户的电子邮件或完整用户名)

如何从JSP文件访问这个领域


基本上,我希望有一个
LdapContext
,我可以将其用于现有的ldap查询代码。

不幸的是,不,您将无法进行任何直接的ldap查询

但这并不是因为
LDAPRealm
不可用,而是因为您不能使用
LDAPRealm
发出任意LDAP查询。您可以使用JMX获取
LDAPRealm
,但只能调用该对象上的公开方法

如果要发出任意LDAP查询,则必须以其他方式配置LDAP资源

据我所知,没有什么能像
数据源
那样既可用于领域(如
datasourcealm
),也可直接用于LDAP服务器。您必须使用Tomcat提供的开箱即用之外的东西与LDAP服务器联系

如果您仍然希望使用JNDI获取LDAP连接,可以查看以下问答: