쉽게 말하자면 인가를 해주는 라이브러리 라고 생각하면 될거 같습니다.RedHat 에서 제공하는 오픈소스인데 SSO 기능, 여러가지 프로토콜 지원, OAUTH2 등 여러가지를 지원해줘서 인가서버를 편리하게 구성 할 수있습니다.
MSA 에서는 인가 서버를 별도로 두고 API 를 Resource 서버로 구현합니다.
하지만 많은 서버를 구현하게 되고 프로토콜, 보안을 신경쓰면 정말 생각하고 구현해야 할 것이 정말 많다고 생각합니다. 하지만 Keycloak 을 사용하면 여러가지 프로토콜 지원, 편리하게 docker나 kubernates 를 활용하여 띄울 수 있습니다. 이미 완성되어 있기 때문이죠. 모든것을 솔루션에 의존하는것은 고려해야 겠지만 인증된 RedHat에서 제공하는 솔루션을 굳이 이용하지 않을 이유가 없다고 생각했습니다.
먼저 저는 배포를 하기전에 local환경에서 테스트와 튜토리얼을 진행 했습니다.
docker run -d --name keycloak -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:legacy
id와 pw가 노출되지만 어차피 제 로컬 환경에서 테스트 용도로 사용할거기 때문에 넘어가겠습니다.
그다음 로그인을 해주면
다음과 같은 화면으로 이동할텐데요
먼저 Realm을 생성해줍니다. 저는 vpc와 같은 네트워크 개념으로 이해했고
이를 기준으로 인가를 해줍니다.
keycloak을 사용하는 client 단을 생성해줍니다. 저는 Front-End와 작업하기때문에 client 명을 저렇게 설정해뒀습니다.
Client에 만든 scope를 설정해줍니다.
https://kauth.kakao.com/.well-known/openid-configuration
우리 서비스에서 필요한 정보들 또한 받아올 수있다. 위 처럼 한다면 email 을 받아오는건데