library) Keycloak + Spring Security 적용기(feat.카카오)

박우영·2023년 6월 21일
0

라이브러리

목록 보기
1/1

개요


Keycloak 이란?

쉽게 말하자면 인가를 해주는 라이브러리 라고 생각하면 될거 같습니다.RedHat 에서 제공하는 오픈소스인데 SSO 기능, 여러가지 프로토콜 지원, OAUTH2 등 여러가지를 지원해줘서 인가서버를 편리하게 구성 할 수있습니다.

사용하게 된 이유?

MSA 에서는 인가 서버를 별도로 두고 API 를 Resource 서버로 구현합니다.
하지만 많은 서버를 구현하게 되고 프로토콜, 보안을 신경쓰면 정말 생각하고 구현해야 할 것이 정말 많다고 생각합니다. 하지만 Keycloak 을 사용하면 여러가지 프로토콜 지원, 편리하게 docker나 kubernates 를 활용하여 띄울 수 있습니다. 이미 완성되어 있기 때문이죠. 모든것을 솔루션에 의존하는것은 고려해야 겠지만 인증된 RedHat에서 제공하는 솔루션을 굳이 이용하지 않을 이유가 없다고 생각했습니다.

사용해보자!


먼저 저는 배포를 하기전에 local환경에서 테스트와 튜토리얼을 진행 했습니다.

keycloak설정

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와 같은 네트워크 개념으로 이해했고
이를 기준으로 인가를 해줍니다.

Client 생성

keycloak을 사용하는 client 단을 생성해줍니다. 저는 Front-End와 작업하기때문에 client 명을 저렇게 설정해뒀습니다.

client-2

url 설정

Advanced Settings

scope

Client-scope

Client에 만든 scope를 설정해줍니다.

KaKao 설정


카카오 개발자

Keycloak

  1. OpenId Connect v1.0
  2. Discovery endpoint 입력
    https://kauth.kakao.com/.well-known/openid-configuration
  3. Redirect URI Copy 후 카카오개발자에 등록
  4. 앱키 -> REST API 키 복사 후 Keycloak 에 등록

    카카오는 secret key는 필수가 아님으로 Client Secret는 의미로 입력하면 된다.

KaKao 정보 맵핑하기

우리 서비스에서 필요한 정보들 또한 받아올 수있다. 위 처럼 한다면 email 을 받아오는건데

0개의 댓글