我在连接到ADFS服务器的spring安全配置中偶然发现401错误。在第一次迭代时,我能够毫无问题地登录到我的java应用程序。从我的Java应用程序注销后,它将我重定向到ADFS登录页面,没有任何问题。在第二次迭代时,应用程序返回401错误,指出用户帐户未经授权。关于这个问题的奇怪之处在于当我突出显示url并按下Enter键时,我能够成功登录到应用程序而没有任何错误。我曾尝试调查我的spring saml配置,web.xml和我的应用程序控制器,但找不到可行的解决方案。我怀疑这与我以前的LDAP配置有关,这也是我的spring安全配置中定义的。我已经迁移到Spring SAML,是否必须删除LDAP身份验证?该问题也适用于会话超时。
我已使用下面的代码段定义了我的spring安全配置。
Spring SAML身份验证:
<authentication-manager alias="authenticationManager">
<authentication-provider ref="samlAuthenticationProvider" />
</authentication-manager>
<beans:bean id="samlAuthenticationProvider"
class="org.springframework.security.saml.SAMLAuthenticationProvider">
<beans:property name="userDetails" ref="userDetails" />
<beans:property name="forcePrincipalAsString" value="false" />
</beans:bean>
<http entry-point-ref="samlEntryPoint">
<intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY" />
<custom-filter before="FIRST" ref="metadataGeneratorFilter" />
<custom-filter after="BASIC_AUTH_FILTER" ref="samlFilter" />
</http>
LDAP身份验证:
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider
ref="ldapAuthProvider" />
</security:authentication-manager>
<bean id="ldapAuthProvider"
class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
<constructor-arg>
<bean
class="org.springframework.security.ldap.authentication.BindAuthenticator">
<constructor-arg ref="contextSource" />
<property name="userSearch" ref="hebSearch">
</property>
</bean>
</constructor-arg>
<constructor-arg ref="authoritiesPopulator" />
<property name="userDetailsContextMapper" ref="userDetailsMapper" />
</bean>
非常感谢任何帮助。
提前致谢!