Spring boot 如何在spring boot security中的另一个微服务中调用我的身份验证微服务

Spring boot 如何在spring boot security中的另一个微服务中调用我的身份验证微服务,spring-boot,authentication,spring-security,restful-authentication,Spring Boot,Authentication,Spring Security,Restful Authentication,我使用SpringSecurity实现了一个身份验证服务,它可以访问存储用户数据的数据库。现在我想实现另一个服务(打开一个全新的项目),其中我只指定身份验证服务的url。我使用了.loginProcessingUrl()并更改了spring安全配置中的登录页面,但这不起作用。如何使用我的身份验证服务对新服务进行身份验证?您可以使用自定义的身份验证提供程序为您进行身份验证 下面是一个简单的例子: 创建调用身份验证服务的CustomRemoteAuthenticationProvider: 公共类C

我使用SpringSecurity实现了一个身份验证服务,它可以访问存储用户数据的数据库。现在我想实现另一个服务(打开一个全新的项目),其中我只指定身份验证服务的url。我使用了
.loginProcessingUrl()
并更改了spring安全配置中的登录页面,但这不起作用。如何使用我的身份验证服务对新服务进行身份验证?

您可以使用自定义的
身份验证提供程序
为您进行身份验证

下面是一个简单的例子:

  • 创建调用身份验证服务的
    CustomRemoteAuthenticationProvider
  • 公共类CustomRemoteAuthenticationProvider实现AuthenticationProvider{
    @凌驾
    公共身份验证(身份验证)
    抛出AuthenticationException{
    字符串username=authentication.getName();
    字符串密码=authentication.getCredentials().toString();
    //请致电您的身份验证服务
    
    //…并返回用户名PasswordAuthenticationToken } @凌驾 公共布尔支持(类身份验证){
    返回authentication.equals(UsernamePasswordAuthenticationToken.class); } }
  • 将您的
    CustomRemoteAuthenticationProvider
    声明为bean(您可以在
    websecurityConfigureAdapter
    中执行),该bean将自动拾取并添加到
    AuthenticationManager
  • @Bean
    公共CustomRemoteAuthenticationProvider CustomRemoteAuthenticationProvider(){
    返回新的CustomRemoteAuthenticationProvider();
    }
    

    注意:通过将
    @组件
    直接添加到
    CustomRemoteAuthenticationProvider
    ,您可以一步完成所有这一切。另外,对于
    AuthenticationProvider
    ,如果您想了解有关如何编写一个身份验证提供程序的更多想法,请查看
    AuthenticationProvider的列表
    DaoAuthenticationProvider
    通常与
    JdbcDaoImpl
    一起用于对数据库进行身份验证。

    是否使用Spring Boot?是的,问题在于如何调用已经实现的身份验证服务并避免使用spring Security提供的默认身份验证服务您是否尝试过向AuthenticationManager添加一个自定义身份验证提供程序?没有,我没有,我只更改了登录页的url和您使用的formLogin()的登录过程.loginProcessingUrl()是否在配置文件中的某个位置?我这样问是因为有很多方法可以实现这一点(比如在过滤器链中添加过滤器)。这取决于你所需要的东西的复杂性。例如,新服务是否会使用身份验证服务对自身进行身份验证?身份验证服务如何知道它正在向您的服务而不是其他人的服务提供信息?UsernamePasswordAuthenticationFilter是将调用您的AuthenticationProvider的筛选器,所以,如果你想知道到底会发生什么,你可以看看它。这听起来很好,但如何调用身份验证服务我必须使用restTemplate来传递URL是的,你可以这样做,或者HttpClient。当然,伙计,我正在尝试,我会尽快告诉你的。谢谢