在 JSP 中访问 JNDIRealm?

access JNDIRealm in JSP?

我在tomcats中配置了一个JNDIRealm server.xml

    <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 资源。

据我所知,没有什么比 DataSource 既可以在领域中使用(如 DataSourceRealm)又可以直接用于 LDAP 服务器。您必须使用 Tomcat 可以开箱即用的方式以外的方式联系 LDAP 服务器。

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