Spring Boot OAuth2 인증서버 적용기 - 2

황남욱·2021년 12월 14일
0
post-thumbnail

https://velog.io/@papakang22/Spring-Boot-OAuth2-인증서버-적용기-1 에서 적용한 내용 테스트를 해봅시다.

SecurityConfig에서 테스트 회원으로 로그인을 해보면 됩니다.

http://localhost:1995/oauth/authorize?client_id=foo&redirect_uri=http://localhost:1995/oauth2/callback&response_type=code&scope=read

를 호출하면 아래와 같이 기본 시큐리티 로그인 폼이 노출됩니다.

여기에 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 컨트롤러에서 값을 볼 수 있게 처리해보도록 하겠습니다.

profile
안녕하세요👋 주니어 백엔드 개발자입니다.

0개의 댓글