我的RESTful Web应用程序需要支持多种身份验证机制。 应用哪种机制不是由特定URL指示,而是在自定义标头字段中使用客户端应用程序名称。 每个客户端应用程序都映射到特定的身份验证机制。
目前,我们需要支持以下内容:
我们在spring-security.xml
:
<authentication-manager>
<authentication-provider ref="daoAuthProvider" />
<authentication-provider ref="ldapAuthProvider" />
<authentication-provider ref="oAuth2Provider" />
</authentication-manager>
问题是AuthenticationManager
接受第一个提供程序,在身份验证失败时尝试进行身份验证并在链中执行以下提供程序。
但我们完全清楚哪个提供程序应该由我们的自定义标头字段执行。
我们可以创建一个自定义Authentication
提供程序,但是这个类没有HttpServletRequest概念。因此,我们无法读取自定义标头字段并相应地委托给某个提供商。
是否还有其他替代方法可以根据标题字段执行特定的提供程序?