Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring安全性-多个身份验证管理器,但仅使用一个_Java_Spring_Authentication_Spring Security_Spring Boot - Fatal编程技术网

Java Spring安全性-多个身份验证管理器,但仅使用一个

Java Spring安全性-多个身份验证管理器,但仅使用一个,java,spring,authentication,spring-security,spring-boot,Java,Spring,Authentication,Spring Security,Spring Boot,我正在构建一个需要多种身份验证方式的web应用程序。 所有用户都有一个类型,该类型指示所使用的身份验证类型。有两种类型: Iternal用户。使用存储在DB中的凭据对用户进行身份验证 LDAP用户。用户根据LDAP进行身份验证 根据用户类型,有没有办法只使用其中一种 我看到您可以将多个身份验证提供程序添加到身份验证管理器中,但通过这种方式,用户可以使用所有这些提供程序进行身份验证 更新 情况如下: 我与应用程序的所有用户都有一个数据库。如果用户是“内部用户”类型,则密码与用户的其他数据一起存

我正在构建一个需要多种身份验证方式的web应用程序。 所有用户都有一个类型,该类型指示所使用的身份验证类型。有两种类型:

  • Iternal用户。使用存储在DB中的凭据对用户进行身份验证
  • LDAP用户。用户根据LDAP进行身份验证
根据用户类型,有没有办法只使用其中一种

我看到您可以将多个身份验证提供程序添加到身份验证管理器中,但通过这种方式,用户可以使用所有这些提供程序进行身份验证

更新

情况如下:

  • 我与应用程序的所有用户都有一个数据库。如果用户是“内部用户”类型,则密码与用户的其他数据一起存储在数据库中。否则,如果用户类型为“LDAP user”,则密码不会存储在数据库中,因为我将询问LDAP,但其他类似类型的数据则存储在数据库中。这是一个必要的应用程序
  • 现在,我有了“内部用户”类型的身份验证提供程序的实现。我用用户名搜索数据库中的用户,如果它存在,我获取类型,如果是“内部用户”,则使用存储在数据库中的密码检查密码
    问题是,如何在执行时通过用户类型选择身份验证提供程序?

    如何扩展BasicAuthenticationFilter并将其添加到HTTPSecurity配置中,并编写自己的逻辑您想做什么?虽然我不确定这个解决方案。@Roxy我不能这样做,因为当用户尝试登录并且所有用户都转到同一URL时,必须检查用户类型。当用户尝试登录时,我必须区分身份验证方法,因为如果用户是应用程序数据库中的用户,我将拥有用户类型。我只是更新一下问题