У меня есть сервер ldap, который я использую для аутентификации пользователей в веб-приложении tomcat. Я использую JNDIRealm, и он настроен в файле контекста, и это отлично работает.
Мне также нужно будет искать ldap для информации пользователя. Я выяснил, как это сделать с помощью "метода jndi", и я отлично работаю за пределами tomcat, создав собственный контекст jndi с помощью хэш-таблицы. Однако вместо настройки свойств jndi в коде я хотел бы создать JNDI Rsource в моем контекстном файле прямо рядом с конфигурацией Realm.
Я думаю, что я бы сделал что-то вроде этого:
<Resource
name="ldap"
auth="Container"
type="com.sun.jndi.ldap.LdapCtxFactory"
java.naming.factory.initial="com.sun.jndi.ldap.LdapCtxFactory"
java.naming.provider.url="ldap://localhost:389"
java.naming.security.authentication="simple"
java.naming.security.principal="uid=rjcarr,dc=example"
java.naming.security.credentials="abc123"
/>
Но либо tomcat сообщает мне, что ресурс не может быть создан, или когда я пытаюсь инициализировать его примерно так:
Context initctx = new InitialContext();
DirContext ctx = (DirContext) initctx.lookup("java:comp/env/ldap");
Tomcat сообщает мне: "Невозможно создать экземпляр ресурса". Я также добавил правильный ресурс-ref в моем файле web.xml, поэтому я не думаю, что проблема.
Поскольку LDAP используется с JNDI-методом, я предполагаю, что он должен быть настроен как ресурс, правильно? Что мне не хватает?