Spring ldap: создание соединения - PullRequest
1 голос
/ 10 августа 2011

Вот мой код:

private DirContext createContext() {

    Hashtable env = new Hashtable();

    env.put(Context.INITIAL_CONTEXT_FACTORY, "org.springframework.ldap.core.support.LdapContextSource");
    env.put(Context.PROVIDER_URL, "ldap://FAKESERV.fakedom:389/");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, "fakeuser@fakedom");
    env.put(Context.SECURITY_CREDENTIALS, "1qaz!QAZ");

    try {
        return new InitialDirContext(env);
    } catch (NamingException e) {
        throw new RuntimeException(e);
    }
}

Работает нормально, но я должен использовать конфигурацию xml.

<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
    <property name="url" value="ldap://FAKESERV.fakedom:389/"/>
    <property name="base" value="ou=FAKESERV.fakedom"/>
    <property name="userDn" value="uid=fakeuser@fakedom"/>
    <property name="password" value="1qaz!QAZ"/>
    <property name="contextFactory" value="com.sun.jndi.ldap.LdapCtxFactory"/>
</bean>

Использование ldapTemplate.getContextSource().getReadOnlyContext() У меня ошибка 525 - «Пользователь не найден».Как изменить этот xml?

server: FAKESERV
fomain: fakedom
user: fakeuser
url: ldap://FAKESERV.fakedom:389/

Все свойства в Active Directory установлены по умолчанию.

Кроме того, как выполнить запрос ldap для поиска какого-либо пользователя?

UPD:сейчас я использовал импл.для ActiveDirectory:

<bean id="authenticationToken" class="org.springframework.security.authentication.UsernamePasswordAuthenticationToken">
        <constructor-arg value="fakeuser@fakedom" />
        <constructor-arg value="1qaz!QAZ" />
    </bean>
    <bean id="authenticationProvider"
         class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
        <constructor-arg value="fakedom" />
        <constructor-arg value="ldap://FAKESERV.fakedom:389/" />
    </bean>

все работает нормально, спасибо.

сейчас я пытаюсь отправить ldap-запрос на сервер ...

1 Ответ

1 голос
/ 10 августа 2011

Spring security теперь предлагает подключение к LDAP / AD.Но одну вещь, которую вы можете попробовать, это установить:

com.sun.jndi.ldap.LdapCtxFactory

как Context.INITIAL_CONTEXT_FACTORY

И InitialLdapContext в качестве контекста он подключается?

Hashtable env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://FAKESERV.fakedom:389/");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "fakeuser@fakedom");
env.put(Context.SECURITY_CREDENTIALS, "1qaz!QAZ");

try {
    return new InitialLdapContext(env, null);
} catch (NamingException e) {
    throw new RuntimeException(e);
}

Если этоработать то это проблема с настройкой.

Хорошее чтение с примерами .

...