2017-03-22 5 views
0

나는 액세스/OAuth를/토큰을하려고 할 때 내가 가지고 오류 :요청 ID를 가진 сlient하지

o.s.s.o.provider.endpoint.TokenEndpoint : Handling error: NoSuchClientException, No client with requested id: username

내가 다음 단계에있어 : ​​

나는/요청 OAuth를 만들 권한을 부여하고 좀하려고
  1. 입력 자격 증명이있는 팝업.
  2. 입력은 오류 "Unsupportted RESPONSE_TYPE"
  3. 가 그럼 난 OAuth를/토큰 제작 요청을 통해

curl -u clientsecret:12345 -X POST http://localhost:8080/oauth/token -H "Accept:application/json" -d "username=user&password=password&grant_type=password"

토큰을 얻으려고 그리고 NoSuchClientException와 함께이 오류를 가지고있어합니다. username이 clientId로 설정된 이유는 무엇입니까? 그것은 내 코드입니다 :

@Configuration 
public class OAuth2ServerConfig { 

@Configuration 
@EnableResourceServer 
protected static class ResourceServerConfiguration extends ResourceServerConfigurerAdapter { 

    @Inject 
    private Http401UnauthorizedEntryPoint authenticationEntryPoint; 

    @Inject 
    private AjaxLogoutSuccessHandler ajaxLogoutSuccessHandler; 

    @Override 
    public void configure(HttpSecurity http) throws Exception { 
     http 
       .exceptionHandling() 
       .authenticationEntryPoint(authenticationEntryPoint) 
       .and() 
       .logout() 
       .logoutUrl("/logout") 
       .logoutSuccessHandler(ajaxLogoutSuccessHandler) 
       .and() 
       .csrf() 
       .requireCsrfProtectionMatcher(new AntPathRequestMatcher("oauth/token")) 
       .disable() 
       .headers() 
       .frameOptions().disable() 
       .and() 
       .sessionManagement() 
       .sessionCreationPolicy(SessionCreationPolicy.STATELESS) 
       .and() 
       .authorizeRequests() 
       .antMatchers("/admin").hasAnyAuthority("ADMIN"); 
    } 
} 

@Configuration 
@EnableAuthorizationServer 
protected static class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { 

    private static final String CLIENTID = "app"; 
    private static final String PROP_SECRET = "secret"; 
    private static final Integer TOKEN_VALIDITY_SECONDS = -1; 
    @Inject 
    private UserDetailsService userDetailsService; 
    @Inject 
    private OAuth2AccessTokenRepository oAuth2AccessTokenRepository; 

    @Inject 
    private OAuth2RefreshTokenRepository oAuth2RefreshTokenRepository; 

    @Bean 
    public TokenStore tokenStore() { 
     return new MongoDBTokenStore(oAuth2AccessTokenRepository, oAuth2RefreshTokenRepository); 
    } 

    @Inject 
    @Qualifier("authenticationManagerBean") 
    private AuthenticationManager authenticationManager; 

    @Override 
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) 
      throws Exception { 

     endpoints 
       .tokenStore(tokenStore()) 
       .authenticationManager(authenticationManager).userDetailsService(userDetailsService); 
    } 

    @Override 
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 
     clients 
       .inMemory() 
       .withClient(CLIENTID) 
       .authorizedGrantTypes("authorization_code","refresh_token","password") 
       .authorities("USER", "ADMIN") 
       .secret(PROP_SECRET) 
       .accessTokenValiditySeconds(TOKEN_VALIDITY_SECONDS); 
    } 
} 
} 

답변

0

curl app:[email protected]:8080/oauth/token -d grant_type=password -d client_id=app -d username=user -d password=password 
같은 요청을 만들기