티스토리 뷰

지난 시간에는 KeyCloak을 이용해서 같은 Realm에 있는 Client간의 SSO 를 구성을 해 보았다. 이것은 각 서비스들을 SSO로 묶어서 한번에 관리하는것이라면 이번에 다룰 Access Token을 발급받아서 사용하는것은 구성된 Realm의 Client를 내부, 외부에서 직접 접근하고자 할때 이용이 된다. 프로젝트 실습의 틀은 기존에 구성을 한것을 기반으로 한다. 

 

출처 : https://meetup.toast.com/posts/239

일단 설명에 앞서 왜 Access Token을 사용하는지에 대해 잘 설명된 그림인것 같아서 퍼왔다. 요즘은 참 회사들마다 경쟁적으로 '우리가 이렇게 뛰어난 기술을 가지고 있소!' 하고 활발하게 블로그를 운영하는데 개인적으로 참 부럽다. 


KeyCloak REST API 이용해서 JWT 발급받기

기존에 KeyCloak에서 만들어 놓은 oingapp1 에서 설정을 다음과 같이 변경을 하였다. 

oingdaddy Realm > Client > oingapp1 > Settings 하단

 

Access Token의 시간을 설정할 수 있고 Direct Grant Flow를 설정을 해줘야 한다. 

 

application에서 연동할때도 중요한 역할을 했던 Client의 Credentials이다. 이중 Secret Key를 잘 보관해 놓는다. 이정도 해놓았으면 KeyCloak에서 할수 있는 설정은 모두 했다. 

 

 

POST요청을 날리기 위해 포스트맨이나 부메랑을 사용한다. 필자는 부메랑을 선호한다. 요청 URL은 다음과 같다. 

http://localhost:8180/auth/realms/oingdaddy/protocol/openid-connect/token

여기에 HEADERS에는 Content-Type을 application/x-www-form-urlencoded 를 입력해주고 

BODY에는 위와 같이 client_id, grant_type, client_secret, scope, username, password 등을 입력을 해준다. 

다 입력을 하였으면 send!

 

 

KeyCloak JWT

그러면 위와 같은 응답이 온다. access_token 뿐만 아니라 refresh_token도 별다른 노력없이 얻을 수 있다. 이것들도 직접 구현하려면 꽤나 골머리 썩으며 고생을 해야하는데 이렇게 간단하게 얻을수 있다. 

 

JWT가 정상적인지 한번 확인을 해본다. 아래 링크로 들어가서 access_token에 해당하는 값을 넣어보면 된다. 

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

JWT

넣고 Decode를 해보니 JWT의 Body부에 값들이 모두 잘 들어가있다. JWT가 잘 생성이 되었다. 인증이 잘 되는지 테스트 해보자. 

 

기존에 인증을 해야만 접근할수 있었던 http://localhost:8081/hello 라는 액션의 Header에 다음과 같이 추가를 해주자. 

headers: {
    'Authorization': 'Bearer' + access_token
}

부메랑에서는 아래와 같이 입력을 해준다. (Bearer Access_Token)

JWT Test

그러면 인증을 해야만 나왔던 http://localhost:8081/hello에 대한 응답을 받아볼 수 있을 것이다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30