Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 使用ClientDetailsUserDetailsService加载ClientDetails的Spring引导_Java_Spring_Spring Boot_Spring Security - Fatal编程技术网

Java 使用ClientDetailsUserDetailsService加载ClientDetails的Spring引导

Java 使用ClientDetailsUserDetailsService加载ClientDetails的Spring引导,java,spring,spring-boot,spring-security,Java,Spring,Spring Boot,Spring Security,我目前正在用SpringBoot2实现一个身份验证流,这将允许Oauth和基本身份验证流 我想使用OAuth表来帮助身份验证将客户机ID与客户机机密进行匹配。(我已经读到,这是Spring中的默认行为,ClientDetailsUserDetailsService显然是以这种方式实现的 下面反映了我目前在我的应用程序中使用的两种配置之一(缺少的配置是OAuth特有的) 我目前得到: 说明: Field clientDetailsService in com.mydomain.core.Appli

我目前正在用SpringBoot2实现一个身份验证流,这将允许Oauth和基本身份验证流

我想使用OAuth表来帮助身份验证将客户机ID与客户机机密进行匹配。(我已经读到,这是Spring中的默认行为,
ClientDetailsUserDetailsService
显然是以这种方式实现的

下面反映了我目前在我的应用程序中使用的两种配置之一(缺少的配置是OAuth特有的)

我目前得到:

说明:

Field clientDetailsService in com.mydomain.core.Application$BasicAuthConfigurationAdapter required a bean of type 'org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)
想知道如何注入这个类(我认为将它构建为一个Bean是前进的方向?),以及这是否是针对数据库进行身份验证的正确方法(clientid和secret)


我们已按如下方式配置ClientDetails服务:

@配置
@EnableAuthorizationServer
类OAuth2Configuration扩展了AuthorizationServerConfigurerAdapter{
//TODO:通过clientDetails服务配置客户端
@凌驾
公共无效配置(ClientDetailsServiceConfigurer客户端)引发异常{
ClientDetailsService jdbcClientDetailsServiceBuilder=clients.jdbc(dataSource.build();
试一试{
jdbcClientDetailsServiceBuilder.loadClientByClientId(sClientName);
}捕获(NoSuchClientException NoSuchClientException){
错误(“消息={捕获的异常{}}”,noSuchClientException.getMessage(),noSuchClientException);
//@formatter:off
clients.jdbc(数据源).passwordEncoder(passwordEncoder).withClient(sServiceClientName)
.authorizedGrantTypes(syntheticsServiceClientGrantTypes)。权限(sConstants.ROLE_用户)
.scopes(s.OAUTH2_WRITE_SCOPE).resourceID(OAUTH2_DEFAULT_RESOURCE_ID)
.机密(sServiceClientSecret);
//@formatter:on
}捕获(例外e){
error(“message={捕获的异常{}}”,e.getMessage(),e);
}
}

}
我们已按如下方式配置ClientDetails服务:

@配置
@EnableAuthorizationServer
类OAuth2Configuration扩展了AuthorizationServerConfigurerAdapter{
//TODO:通过clientDetails服务配置客户端
@凌驾
公共无效配置(ClientDetailsServiceConfigurer客户端)引发异常{
ClientDetailsService jdbcClientDetailsServiceBuilder=clients.jdbc(dataSource.build();
试一试{
jdbcClientDetailsServiceBuilder.loadClientByClientId(sClientName);
}捕获(NoSuchClientException NoSuchClientException){
错误(“消息={捕获的异常{}}”,noSuchClientException.getMessage(),noSuchClientException);
//@formatter:off
clients.jdbc(数据源).passwordEncoder(passwordEncoder).withClient(sServiceClientName)
.authorizedGrantTypes(syntheticsServiceClientGrantTypes)。权限(sConstants.ROLE_用户)
.scopes(s.OAUTH2_WRITE_SCOPE).resourceID(OAUTH2_DEFAULT_RESOURCE_ID)
.机密(sServiceClientSecret);
//@formatter:on
}捕获(例外e){
error(“message={捕获的异常{}}”,e.getMessage(),e);
}
}
}
   @Order( 1 )
   @Configuration
   @Profile( "!test" )
   public static class BasicAuthConfigurationAdapter extends WebSecurityConfigurerAdapter
   {

      @Autowired
      private  ClientDetailsUserDetailsService clientDetailsService;

      @Bean
      public AuthenticationManager customAuthenticationManager() throws Exception
      {
         return authenticationManager();
      }


      @Override
      public void configure( HttpSecurity http ) throws Exception
      {
         http

                  .authorizeRequests()
                  .antMatchers( "/dummy/**" ).hasAnyRole( "ADMIN", "USER" )
                  .anyRequest()
                  .authenticated()
                  .and().httpBasic();
      }


      @Autowired
      public void configAuthentication( AuthenticationManagerBuilder auth ) throws Exception
      {
         auth.parentAuthenticationManager( authenticationManagerBean() ).userDetailsService( clientDetailsService );
      }

   }