logo

Authorization Code 인증

인증 코드를 사용해 웹 및 웹앱에서 토큰을 얻을 수 있습니다.

[GET] https://auth.smtown.com/oauth/authorize?
client_id=0f19f14f-6f4a-43d4-b136-11111111111
&response_type=code
&redirect_uri=http://localhost:8080/popup/callback
&scope=profile.info
&state=xyz
&lang=en
파라메타 필수여부 설명
client_id 필수 앱 등록 후 발급되는 client_id 입니다.
response_type 필수 code 고정
redirect_uri 필수 인증 결과를 보내는 앱의 redirect_uri 입니다. 앱의 redirect URL 중 하나와 일치해야 합니다.
scope 필수 사용자 동의가 필요한 리소스의 범위입니다. 공백으로 구분할 수 있습니다.
state 옵션 요청 위조 공격을 방지하기 위해 임의 생성 된 고유값입니다. 발송 된 값과 반환 된 값을 비교하여 위조를 방지할 수 있습니다.
가급적 요청마다 새로운 랜덤한 문자열을 만들어 사용하시고, redirect_uri에서 값이 일치하는지 확인하세요. (DB 저장 혹은 Session에 저장해주세요)
reauthenticate 옵션 로그인을 유지하지 않고 로그인창을 사용해야하는 경우, reauthenticate=true를 사용하시면 창이 열릴 때마다 인증을 요구합니다.
lang 옵션 로그인 화면은 기본적으로 header의 accept-language를 기준으로 다국어를 지원합니다.
강제로 변환하고자 할 경우에 사용하세요. ko, en, ja, zh 기본값은 en 입니다.
성공 응답
[GET] http://localhost:8080/popup/callback?
code=Hs56CB
&state=xyz
파라메타 설명
code 요청한 authorization_code 입니다. 이 코드를 사용하여 리소스에 대한 access token을 요청할 수 있습니다.
만약 전달받은 코드가 빈 값일 경우 오류처리 해주시기 바랍니다.
state 요청 시 전달 된 state 값을 그대로 redirect_uri에 전달합니다.
요청 시 state 값과 전달 받은 state가 일치하는지 확인해주세요.
샘플
<a href="#" id="btn-login">로그인</a>
<script>
    window.onload = function(){
        document.getElementById('btn-login').onclick = function(e){
            window.open("https://auth.smtown.com/oauth/authorize?" +
                "client_id=0f19f14f-6f4a-43d4-b136-11111111111" +
                "&redirect_uri=http://localhost:8080/popup/callback" +
                "&response_type=code" +
                "&scope=profile.info" +
                "&state=xyz", "SMTOWN Authorize", "width=500,height=545");

            e.preventDefault();
        }
    }
</script>
다음 - 응답 받은 code를 이용해 access token 받기