在JSP中访问JNDIRealm?

时间:2017-01-26 10:38:46

标签: 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}"
           userSubtree="true"
           roleBase="xxx"
           roleName="CN"
           roleSearch="(member={0})"
           connectionName="xxx"
           connectionPassword="xxx"
   />

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

如何从JSP文件访问此领域?

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

1 个答案:

答案 0 :(得分:0)

不幸的是,不,你将无法进行任何直接的LDAP查询。

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

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

据我所知,没有像DataSource那样可以在领域(如DataSourceRealm)中使用,也可以直接用于LDAP服务器。您必须使用Tomcat可以提供的其他东西来联系LDAP服务器。

如果您仍想使用JNDI获取LDAP连接,可以查看此SO问题和答案:Trying to configure LDAP as JNDI Resource in Tomcat