Spring安全性提供多种身份验证机制

时间:2014-01-26 13:23:28

标签: authentication spring-security

我的RESTful Web应用程序需要支持多种身份验证机制。 应用哪种机制不是由特定URL指示,而是在自定义标头字段中使用客户端应用程序名称。 每个客户端应用程序都映射到特定的身份验证机制。

目前,我们需要支持以下内容:

  • 用户名/密码验证
  • LDAP auhtentication
  • OAuth2

我们在spring-security.xml

中定义了多个身份验证提供程序
<authentication-manager>
    <authentication-provider ref="daoAuthProvider" />
    <authentication-provider ref="ldapAuthProvider" />
    <authentication-provider ref="oAuth2Provider" />
</authentication-manager>

问题是AuthenticationManager接受第一个提供程序,在身份验证失败时尝试进行身份验证并在链中执行以下提供程序。 但我们完全清楚哪个提供程序应该由我们的自定义标头字段执行。 我们可以创建一个自定义Authentication提供程序,但是这个类没有HttpServletRequest概念。因此,我们无法读取自定义标头字段并相应地委托给某个提供商。

是否还有其他替代方法可以根据标题字段执行特定的提供程序?

0 个答案:

没有答案