我在Spring Security中使用了身份验证提供程序。我有两个身份验证提供程序:LocalAuthenticationProvider
和RemoteAuthenticationProvider
。身份验证流程是
RESTful
Web服务进行身份验证
凭证。 401
。如果凭据失败,则@Override protected void configure( AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(localProvider).authenticationProvider(remoteProvider); }
LocalAuthenticationProvider
抛出AuthenticationException
。如果凭据为passed
,则会返回null
。
我的问题是Spring Security Framework调用RemoteAuthenticationProvider
甚至LocalAuthenticationProvider
是failed
。
当我从RemoteAuthenticationProvider
提供商列表中删除AuthenticationManagerBuilder
时,即使LocalAuthenticationProvider
failed
也是如此。
我想知道如何实现此身份验证流程。这两个提供商相互依赖。
答案 0 :(得分:1)
查看ProviderManager
的Javadoc,如果您的第一个提供者要抛出AccountStatusException
,那么身份验证将无法进入第二个提供者:
此过程的例外[提供程序在一次通过之前按顺序调用]是提供程序抛出的时间
AccountStatusException
,在这种情况下,列表中没有其他提供商 将被查询。