본문 바로가기
Dev

4. [SSO] Keycloak & Springboot 적용기

by VIPeveloper 2020. 9. 26.
반응형

1. 서론

앞서 SSO 구축을 위한 오픈소스(Keycloak)을 찾았고, 전반적인 개념과 getting started에 대해 알아보았다.

이제 스프링 부트에 더 잘 적용시키기 위해 www.baeldung.com/spring-boot-keycloak

 

A Quick Guide to Using Keycloak with Spring Boot | Baeldung

Learn how to configure a Keycloak server and use it with a Spring Boot Application.

www.baeldung.com

을 번역해보는 작업을 진행해보려 한다.

- 해당 작업은 20년 6월 23일 최종 수정으로, 아주 따끈따끈한 자료이다.

2. 본론

2.1 개요

이 게시글에서는, 우리는 Keycloak 서버구성의 기초를 배우고, 스프링부트에 어떻게 적용시키는지 배울 것이다. 그리고 어떻게 스프링 시큐리티에 적용시킬지도 배울 것이다.

2.2 왜 키클락인가?

키클락은 오픈소스이고, 모던 앱과 서비스를 타겟팅한 접근 관리 솔루션이다. 키클락은 SSO를 지원하고, Social Login을 지원하고, User의 그룹핑을 지원하고, 클라이언트, 관리자 페이지, 계정 관리 콘솔을 제공합니다. 이번 튜토리얼에서는 Keycloak Admin console의 환경구성을 해보고, Keycloak client Adapter을 이용해서 스프링부트와 연결해보겠습니다.

우리는 여기에서 keycloak client adapter를 이용해보았다.

2.3 키클락 서버 환경구성하기

다음 포스팅을 먼저 학습하자.

 

[SSO] Keycloak 공식문서 따라해보기 - 1

1. 서론 공식문서를 번역해보기로 했다. 프로젝트에 적용은 했는데, 이걸 어떻게 커스터마이징해야할지 더 알아보고 싶은 궁굼증이 생겼다. 문서는 크게 4꼭지로 이루어져있다. Trying out keyclock In

dkyou.tistory.com

을 레퍼런스로 먼저 공부해야한다. 내용은 같지만, 서버 포트를 8180으로 지정해준 것이 다르다.

./standalone.sh를 실행시킬 때

./standalone.sh -Djboss.socket.binding.port-offset=100

으로 실행시키자.

- localhost:8180/auth 에서 master realm으로 접속해준 후, SpringBootKeycloak realm을 추가생성해주자.

2.4 클라이언트 만들기

클라이언트 텝으로 가면, 이미 클라이언트 default 가 구성되어있는 것을 볼 수 있다.

하지만 우리는 새로운 우리의 앱을 클라이언트로 추가할 필요가 있다. 새로운 클라이언트를 login-app 이라고 할 것이다.

저장을 누르면, 이 튜토리얼에서는, valid Redirect URLs만 설정해주면 됩니다. 이 필드는 인증을 위한 클라이언트 URL(s)로 채워져야 합니다. 이 튜토리얼에서는 8081 포트로 지정해주었습니다.

2.5 Role, User 만들기

키클락은 Role-Base 접근방식을 이용합니다. 그러므로 각각의 유져들은 역할을 가지고 있어야만 합니다. 그러기 위해, 우리는 Roles 페이지를 설정해주어야 합니다.

다음에 add user role 해줍니다.

유저라는 역할을 생성해주었지만, 실제 유저를 생성해보지는 않았습니다. 따라서 우리는 User page로 이동해서 방금 생성한 User 역할을 부여해줄 유저를 생성해줍시다.

유저를 생성해 줄 것인데, 이름을 user1로 지정합니다.

저장을 누르면, 유저 세부사항이 보여집니다.

상단의 credentials 탭으로 이동해서, 비밀번호를 123으로 설정해줍니다.

Role Mappings 탭으로 이동해줍니다. user Role을 user1에게 부여합니다.

available Roles 부분의 add selected 해주니까 user 가 넘어가졌습니다. 이거면 될 듯 하네요.

3. 마무리

- 오늘은 realm 내부에서 클라이언트를 만들고, 역할을 만들어보았습니다. 그리고 이 역할을 유저에게 부여해보는 시간을 가졌습니다.

- 다음 시간에는 키클락 API를 이용해서 접근토큰(Access Token)을 생성해보는 시간을 가지겠습니다.

- 긴 글 읽어주셔서 감사합니다.

반응형