OAuth2 인증 테스트를 진행할 때 grant type을 password로 설정하여 접속 하는 경우 필요한 파라미터는 grant_type = password, client_id, client_secret, username, password 입니다. 테스트를 진행하다 보면 Unsupported grant type: password 라는 리턴 값을 받는 경우가 있습니다.
{ "error":"unsupported_grant_type", "error_description":"Unsupported grant type: password" } |
실제 리턴되는 형태는
org.springframework.web.client.HttpClientErrorException$BadRequest: 400 : [{"error":"unsupported_grant_type","error_description":"Unsupported grant type: password"}] |
일단 오류 결과를 얻었다는 건 OAuth2 Server 작업은 잘 되었다고 볼 수 있습니다. 그럼 이제 오류만 해결하면 됩니다. 사실 이건 오류는 아니고 설정이 빠져서 발생하는 부분입니다.
AuthorizationServerConfigurerAdapter를 상속받아 서버 인증 설정을 하게 되는데 상속하는 Method에서 configure(AuthorizationServerEndpointsConfigurer endpoints) 작업을 하지 않은 경우일 가능성이 있습니다. 해결책은 여기에 AuthenticationManager를 추가해 주면 됩니다.
WebSecurityConfigurerAdapter에 다음과 같이 Bean을 설정 하고
@Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override @Bean public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } }
|
AuthorizationServerConfig의 endpoints에 추가를 해줍니다.
@Configuration @EnableAuthorizationServer public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
@Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager); }
}
|
그리고 다시 테스트를 하면 원하는 결과를 얻을 수 있습니다.
- copy coding -
'Java' 카테고리의 다른 글
[ObjectMapper] VO를 JSON 형태의 String으로 변환 (0) | 2020.05.10 |
---|---|
Spring Boot Scheduler @Scheduled 이용한 Batch 작업 (0) | 2020.05.02 |
Maven jQuery Validation 이용 form input 유효성 검사 (0) | 2020.03.29 |
JAVA substring split 특수문자 문자열 자르기 (0) | 2020.03.15 |
Spring Security Login 화면 만들기 (4) | 2020.02.24 |