在基於spring的web應用程序中,我一直在使用shiro 1.2.1進行authenticationStrategy設置。我有2個領域。一個針對database
進行身份驗證,另一個針對ldap。兩個realms
工作正常,只是我想要一個FirstSuccessfulStrategy
但似乎兩個領域仍被稱爲。這裏是我的安全應用上下文:apache shiro:如何使用spring applicationcontext設置authenticationStrategy?
<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
嗨,很抱歉,遲到的迴應。我已經嘗試過使用不同的令牌,並基於我放在UI上的組合框創建它們,就像MS windows登錄切換域一樣。這是我現在快速修復的問題。我將在下一次迭代中嘗試這個解決方案,我被限期截獲。因此修復工作對於UI用戶和管理人員來說很好。 –