Apache Shiro в сочетании с LDAP - PullRequest
       13

Apache Shiro в сочетании с LDAP

6 голосов
/ 06 августа 2010

Я интегрировал Apache Shiro с фиктивным пользователем, и он работает просто отлично! Но у этого фреймворка нет обучающих программ онлайн ?! Это очень сложно, как начинающий.

Может кто-нибудь помочь мне с интеграцией ldap. Я только нашел информацию, что это не так сложно: - /

Я начал с настройки области:

   [main]
    myRealm = org.apache.shiro.realm.ldap.AbstractLdapRealm

Но что делать дальше? Как это настроить?

Спасибо за любую помощь

Ответы [ 4 ]

4 голосов
/ 18 ноября 2010

Это может быть мало чем поможет. Проверьте весь учебник, который охватывает простую аутентификацию и аутентификацию LDAP. http://www.ibm.com/developerworks/web/library/wa-apacheshiro/

4 голосов
/ 06 августа 2010

AbstractLdapRealm является абстрактным - вы не можете создать его экземпляр напрямую или объявить его как свою область. Вам придется создать подкласс этого класса и реализовать необходимые абстрактные методы.

Вам не нужно будет делать это при следующем выпуске Shiro - в настоящее время существует открытая проблема (https://issues.apache.org/jira/browse/SHIRO-127), чтобы получить конкретную реализацию, которую можно использовать «из коробки», чтобы 95% конечных пользователей не нужно создавать подкласс класса AbstractLdapRealm.

НТН,

Les

3 голосов
/ 05 мая 2011

Вот рабочий пример.

active.ini

ldapRealm = org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm
ldapRealm.url = ldap://ldapserver:389

Код:

Factory<SecurityManager> ldapFactory = new IniSecurityManagerFactory("classpath:active.ini");
SecurityManager sManager = ldapFactory.getInstance();
SecurityUtils.setSecurityManager(sManager);

Subject currentUser = SecurityUtils.getSubject();

        if (!currentUser.isAuthenticated()) {
            UsernamePasswordToken token = new UsernamePasswordToken("user", "password");
            try {
                currentUser.login(token);
            } catch (UnknownAccountException ex) {
                logger.info("Unknown user");
            } catch (IncorrectCredentialsException ex) {
                logger.info("Incorrect credentials");
            } catch (LockedAccountException ex) {
                logger.info("Account is Locked");
            } catch (AuthenticationException ex) {
                logger.info("Authentication Exception");
            }
        }

        logger.info("User [" + currentUser.getPrincipal() +"] logged succesfully");
        currentUser.logout();
0 голосов
/ 23 января 2014

если вы используете Spring в качестве базовой платформы, вы также можете использовать контекст приложения XML для определения областей как:

    <bean id="ldapRealm" class="org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm">
            <property name="url" value="ldap:/ldapserver:389" />
    </bean>

Затем передать область в Security Manager:

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
    <property name="realm" ref="ldapRealm" />
</bean>

Затем вызовите код входа в систему, где вы хотите.

...