Я боролся с аутентификацией настроек аутентификации с помощью сиро 1.2.1 в веб-приложении с весной. У меня 2 сферы. Один аутентифицируется против database
и один против ldap. оба realms
работают отлично, так что я хотел FirstSuccessfulStrategy
, но кажется, что оба царства все еще вызываются. вот мой контекст безопасности-приложения:apache shiro: как установить аутентификациюStrategy с использованием Spring applicationcontext?
<bean id="passwordService" class="org.apache.shiro.authc.credential.DefaultPasswordService">
<property name="hashService" ref="hashService" />
</bean>
<bean id="hashService" class="org.apache.shiro.crypto.hash.DefaultHashService">
<property name="hashAlgorithmName" value="SHA-512" />
<property name="hashIterations" value="500000" />
</bean>
<bean id="SaltedSha512JPARealm" class="bla.bla.webapp.security.SaltedSha512JPARealm">
<property name="credentialsMatcher">
<bean class="org.apache.shiro.authc.credential.PasswordMatcher">
<property name="passwordService" ref="passwordService"/>
</bean>
</property>
</bean>
<bean id="ldapContextFactory" class="org.apache.shiro.realm.ldap.JndiLdapContextFactory">
<property name="url" value="${user.ldap.connection.url}"/>
<property name="authenticationMechanism" value="${user.ldap.connection.auth_mecanism}"/>
</bean>
<bean id="ldapRealm" class="bla.bla.webapp.security.LDAPRealm">
<property name="userDnTemplate" value="${user.ldap.connection.userDnTemplate}"/>
<property name="contextFactory" ref="ldapContextFactory" />
</bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager" depends-on="roleRepository,roleRightRepository,rightRepository,userRepository">
<property name="realms">
<list>
<ref local="ldapRealm"/>
<ref local="SaltedSha512JPARealm"/>
</list>
</property>
<property name="authenticator.authenticationStrategy">
<bean class="org.apache.shiro.authc.pam.FirstSuccessfulStrategy"/>
</property>
</bean>
есть что-нибудь там, что я плохо себя чувствую?
спасибо за ваш ответ. Моя проблема заключается в том, что даже после успешной проверки подлинности с помощью 'stuart ldap server' (http://blog.stuartlewis.com/2008/07/07/test-ldap-service/) он пытается аутентифицироваться в базе данных с помощью' SaltedSha512JPARealm' , Вот почему я, хотя что-то не так с моей конфигурацией. Знание ldapRealm было добавлено сначала, это не должно произойти правильно? –
Вы правы. Кажется, что 'ModularRealmAuthenticator' спроектирован так, что он всегда будет пытаться аутентифицировать пользователя по всем областям. Только обновленный ответ. – sody
Привет, извините за поздний ответ. я пробовал использовать другой токен и создавать их на основе combobox, который я накладываю на пользовательский интерфейс, точно так же, как и для входа в MS windows для переключения домена. Это мое быстрое решение. Я попробую это решение на следующей итерации, я поймаю крайний срок. так что исправление отлично работает для парня и руководства пользователя. –