keycloak 서버 만들기

freejia·2021년 9월 10일
0

keycloak

목록 보기
1/2

키클락을 설치하고, Realm 과 User를 만들어보자.

로컬에 keycloack standalone server 설치하기

환경 macOS BigSur
java11

키클락이란?

레드햇이 만든 SSO 오픈소스
인증과 인가표준(SAML, OAuth 2.0 등)을 제공한다.

1.키클락 Server 다운로드

키클락 공식 홈페이지에서 keycloak.zip을 다운로드 받는다.

zip 압축을 푼다.

unzip keycloak-15.0.2.zip

압축을 풀면 디렉토리 구조는 아래와 같다.

2. standalone 서버 실행

터미널에서 아래 경로로 간다.

cd keycloak-15.0.2/bin

아래 명령으로 standalone 키클락 서버를 실행한다.
이렇게 실행하면 localhost 루프백 인터페이스로부터만 접속할 수 있다.
윈도우의 경우, standalone.bat 을 실행한다.

./standalone.sh

브라우저를 열고 http://localhost:8080/auth/ 으로 접속하자.
아래와 같은 관리자 메인 화면이 보인다.

참고 키클락 서버 실행 포트 지정

기본 포트가 8080 으로 되어있는데 offset을 주면 8180 으로 실행된다.

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

3. 관리자 콘솔 계정 만들고 관리자 콘솔 접속

id: root / pw: root 로 만들었다.

계정을 만들면, 관리자 콘솔 접속 링크로 화면이 바뀐다.

클릭해서 접속하면 키클락이 제공하는 로그인 화면이 보인다.
http://localhost:8080/auth/admin 으로도 접속 가능하다.

id: root / pw: root 입력하고 접속하자.

Realm 과 User 이해하기

Realm: 접근 범위.
Client: 애플리케이션 단위.
User: Client에 인증을 요청하는 사용자 단위.
Role: User에게 부여할 권한.

기본으로 Master Realm 이 있다.

Realm은 1개 이상의 Client를 하나로 묶어서 관리할 수 있는 범위다. SSO 적용은 Realm 단위로 한다.
예를 들어, Daum mail을 쓰다가, Daum cafe 서비스에 접속할 때 따로 로그인이 필요 없는건 하나의 Realm으로 묶여 있기 때문인 것이다.
User의 Role을 설정하면 사용자, 관리자 등으로 구분된 권한을 줄 수 있다.

4. Realm 만들기

Master realm: Keycloak을 만들자마자 생성되는 admin이 관리하는 realm.
Other realm: master realm의 admin이 만들어내는 realm.

왼쪽 상단에 "Add realm"버튼을 클릭해서 custom realm을 만들어보자.
realm의 이름을 SpringBootKeycloak 으로 하고 "Create"한다.

왼쪽 상단의 Realm 이름이 SpringBootKeycloak으로 바뀌어 있다.
Master Realm 설정에서 방금 만든 사용자정의 Realm인 SpringBootKeycloak 설정 페이지로 이동한 것이다.

왼편의 "Clients"를 눌러보자. 기본 클라이언트들이 있다.
내가 연결할 Spring boot app을 추가하기 위해 create를 누른다.

간단히 이름을 login 이라고 해두고, save 누른다.

이제 login client의 URL을 지정해준다.
http://localhost:8081/*
페이지 하단에 "save"를 눌러 반영한다.

5. Role 만들기

키클락은 Role-Based 접근 방식을 쓴다. 따라서 User는 반드시 Role을 가져야 한다.
왼쪽에 "Roles"를 클릭하여 Roles 페이지로 이동한다.
"Add Role"을 클릭한다.
간단히 1개의 roll을 만든다. 사용자 user 를 만들고 "save"한다.

여기까지는 설정 과정이었다.
사용자 정의 "Realm"을 SpringBootKeycloak이라고 만들었다.
SpringBootKeycloak Realm에서 다룰 "Client"를 login이라고 정의했다.
여기서 Client는 애플리케이션을 의미한다. (키클락을 활용할 스프링부트 애플리케이션)
"Role"는 일반 사용자를 의미하는 user만 정의했다.

이제 SpringBootKeycloak realm안에 계정하나를 만들고 키클락을 활용해보자.

6. User 만들기

왼쪽 하단에 Manage 쪽에 "Users"가 있다.
관리자는 직접 User를 추가/삭제 할 수 있다.
지금은 User가 없으니 "Add user"를 클릭한다.

Username: springboot_user
입력하고 "Save"하자.

저장하면 방금 만든 springboot_user의 페이지가 나온다.
임시 비밀번호 설정을 위해 "Credentials"탭을 클릭한다.
Password: 1234

패스워드를 입력하고 "Set Password" 를 클릭하면 반영된다.

springboot_user에 role을 설정하자.

Role Mappings 탭에서 role을 할당한다.
user라고 만들어뒀던 role을 "Add selected"한다.
그러면 user가 Assigned Roles로 이동한다.

다음 포스팅에서는 spring boot app과 keycloak server를 연결해서 로그인까지의 과정을 정리하겠다.


참고
JBoss Keycloak, 오픈 소스 인증, 인가 대행 솔루션 소개
Securing Spring Boot REST APIs with Keycloak
Getting Start Guide
키클락 공식문서 따라해보기

profile
코딩 리딩 라이딩💛

0개의 댓글