Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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
Spring安全性:一个用于加载权限的身份验证提供者,另一个用于真正的身份验证_Spring_Authentication_Spring Security - Fatal编程技术网

Spring安全性:一个用于加载权限的身份验证提供者,另一个用于真正的身份验证

Spring安全性:一个用于加载权限的身份验证提供者,另一个用于真正的身份验证,spring,authentication,spring-security,Spring,Authentication,Spring Security,我的应用程序使用Spring安全性来处理身份验证。到目前为止,我使用的是基于jdbc用户服务的简单authenticaton provider,它同时执行身份验证和加载权限,并且一切正常: <authentication-manager alias="authenticationManager"> <authentication-provider> <password-encoder hash="sha" /> <

我的应用程序使用Spring安全性来处理身份验证。到目前为止,我使用的是基于jdbc用户服务的简单authenticaton provider,它同时执行身份验证和加载权限,并且一切正常:

<authentication-manager alias="authenticationManager">
    <authentication-provider>
        <password-encoder hash="sha" />
        <jdbc-user-service data-source-ref="dataSource"
            authorities-by-username-query="select t1.login, t2.USERROLES from USER as t1, USERROLES as t2 where t1.ID=t2.User_ID and t1.login= ?"
            users-by-username-query="select login,password,enabled from USER where login = ?" />
    </authentication-provider>
</authentication-manager>

现在我有了一个新的规范:

  • 权限应该像以前一样从数据库中加载
  • 应该使用LDAP进行身份验证

  • 我在一个测试应用程序中正确配置了LDAP身份验证,它工作得很好。现在我必须把它组合起来。我怎样才能使我的jdbc身份验证提供程序不执行身份验证,而只加载权限并启用下一个身份验证管理器(在我的情况下是LDAP身份验证管理器)来执行真正的身份验证?

    您需要实现自己的身份验证提供程序,当然,您可以重用
    DaoAuthenticationProvider
    和LDAP身份验证提供程序

    顺便说一句:Ldap身份验证提供程序的授权部分在
    ldaAuthoritiesPopulator
    中完成