当前位置: 首页 > 知识库问答 >
问题:

在同一身份验证管理器中列出多个身份验证提供者

谷梁弘深
2023-03-14

我在调试身份验证问题时遇到了这个代码片段:

 <security:authentication-manager>
         <security:authentication-provider  user-service-ref="userDetailsService">
            <security:password-encoder hash="sha-256">
                <security:salt-source user-property="dateCreated" />
            </security:password-encoder>
         </security:authentication-provider>
         <security:authentication-provider ref="ldapAuthProvider" />
    </security:authentication-manager>

我在调试和摆弄用户凭证时注意到,如果第一个身份验证提供者(即< code > userdailsservice )无法对我的用户进行身份验证,那么就会远程调用我的LDAP服务器来尝试对我的用户进行身份验证。但是,如果第一个身份验证提供者成功地对我的用户进行了身份验证,则不会调用第二个身份验证提供者。

我的问题是,列出这些身份验证提供者的工作方式是否使得如果一个失败,我们应该跳到下一个?我还想知道身份验证管理器中列出的身份验证提供者的顺序是否起到了作用(从优先级的角度来看)?非常感谢Spring Security官方文档中的额外参考。

共有1个答案

连俊智
2023-03-14

来自 Spring 安全性参考文档:

每个AuthenticationProvider都有机会指示身份验证应该成功、失败,或者指示它无法做出决定并允许下游AuthentiationProvider做出决定。如果配置的AuthenticationProviders都无法进行身份验证,则身份验证将失败(…)

实际上,每个AuthenticationProvider都知道如何执行特定类型的身份验证。例如,一个AuthenticationProvider可能能够验证用户名/密码,而另一个可能能够验证SAML断言。

定义多个身份验证提供程序时,将按声明顺序查询它们。
如果第一个身份验证提供程序无法得出结论,它将允许下一个身份验证提供程序尝试。

 类似资料:
  • 问题内容: 我的Web应用程序有多个身份验证管理器(一个用于API,一个用于WEB访问)。该api应该仅具有基本的身份验证服务- 通过spring安全标记进行配置,如下所示: 我无法内联身份验证提供程序,因为我希望它可以被子bean配置覆盖。 我的问题是我无法在security:authentication-provider元素上定义别名/ id以在身份验证管理器中引用它。有一个简单的解决方法吗?

  • 身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工

  • 我正在尝试在Spring身份验证服务器(Spring Security)中配置多个身份验证提供程序(主要和次要) 根据“身份验证”方法留档: 返回:包含凭据的完全经过身份验证的对象。如果AuthenticationProvider无法支持对传递的身份验证对象的身份验证,则可能返回null。在这种情况下,将尝试下一个支持提供的身份验证类的AuthenticationProvider。 如果身份验证失

  • 我正在尝试为正在进行的 spring-boot 项目实现身份验证和授权服务。我已经实现了一个基于 JPA 的身份验证提供程序,它工作正常。如何将 LDAP 身份验证提供程序添加到同一项目并根据用户身份验证类型在身份验证方法之间切换? 下面是我的代码 虽然我的LDAP证书是正确的,但它没有达到那个方法。如何从DB ex(LDAP、JPA、SSO)获取我的应用程序的身份验证方法,并执行相应的身份验证提

  • spring-security.xml: 在新泽西行动豆的内部是这样的: 整个应用程序构建良好,jetty服务器启动没有问题(MyAuthenticationManager和org.springframework.security.AuthenticationManager都成功地预安装了),但是当尝试使用autowired authmanager时,我得到了空指针。

  • 本文向大家介绍asp.net mvc中Forms身份验证身份验证流程,包括了asp.net mvc中Forms身份验证身份验证流程的使用技巧和注意事项,需要的朋友参考一下 验证流程 一、用户登录 1、验证表单:ModelState.IsValid 2、验证用户名和密码:通过查询数据库验证 3、如果用户名和密码正确,则在客户端保存Cookie以保存用户登录状态:SetAuthCookie     1