https://velog.io/@papakang22/Spring-Boot-OAuth2-인증서버-적용기-1 에서 적용한 내용 테스트를 해봅시다.
SecurityConfig에서 테스트 회원으로 로그인을 해보면 됩니다.
를 호출하면 아래와 같이 기본 시큐리티 로그인 폼이 노출됩니다.
여기에 SecurityConfig 에서 지정한 user
/ pass
로 로그인해봅시다
그럼 OAuth Approval 이라는 리소스 허용확인을 묻는 화면으로 이동됩니다.
허용하게 된다면 위 url 에서 지정한 redirect_uri로 리다이렉트 되게 되는데 현재 /oauth2/callback
의 컨트롤러가 구현되지 않았으므로 404페이지로 노출됩니다. 하지만 해당 url 뒤에 code라는 값을 실어서 보내주게 되므로 code값을 이용하여 우리는 access_token을 받아올 수 있습니다.
$ curl -X POST \
'http://localhost:1995/oauth/token' \
-H 'Authorization:Basic Zm9vOmJhcg==' \
-d 'grant_type=authorization_code' \
-d 'code=N4CscI' \
-d 'redirect_uri=http://localhost:1995/oauth2/callback'
-H 구문의 Basic 뒤에 암호화된 문자열은 client_id:client_secret을 Base64로 인코딩한 문자열이며 확인 하기위해 저는 아래와 같이 로그를 찍어서 값을 넣어줬습니다.
@SpringBootApplication
public class MyClosetOauthApplication{
public static void main(String[] args) {
String credentials = "foo:bar";
String encodedCredentials = new String(Base64.encodeBase64(credentials.getBytes()));
System.out.println(encodedCredentials);
SpringApplication.run(MyClosetOauthApplication.class, args);
}
}
-d code 에 해당하는 부분은 아까 리다이렉트 된 url 뒤의 code값을 넣으면 됩니다.
curl을 날렸을 때 access_token, token_type, refresh_token, expires_in, scope 값이 들어있는 json이 나오면 테스트 성공입니다!!
다음엔 curl 대신 /oauth2/callback 컨트롤러에서 값을 볼 수 있게 처리해보도록 하겠습니다.