이번 시간에는 Realm과 Client, 그리고 User에 대해 알아보겠습니다.
위 그림에서 Application은 Client라고도 불립니다. 혼동을 방지하기위해 앞으로 Client라고 부르겠습니다.
Realm
Realm은 사용자, 인증, 인가, 권한, 그룹이 관리하는 범위입니다.
한 Realm내의 Client들(위 그림에서는 Application입니다.)은 서로 SSO를 공유합니다. 각각의 Realm은 독립적입니다.
처음 Keycloak에 접속하면 Master Realm이 있는데, 이 Realm은 다른 Realm을 관리하는데만 사용합니다. (단지 관리를 하기위한 Realm이고, 다른 Realm이 Master Realm을 상속 받는 것은 아닙니다.)
Client
Client란 인증, 인가 업무를 Keycloak에게 요청할 수 있는 주로 어플리케이션이나 서비스를 뜻합니다. Keycloak은 Client들에게 보안이나, SSO를 제공해줍니다.
User
User란 Client를 이용하는 사용자를 뜻합니다. 사용자는 Realm단위로 되어있습니다. A라는 Realm에 가입된 X라는 사용자는 Client들에서 X의 아이디 하나로 로그인이 가능하지만, B라는 Realm에는 가입이 되어있지 않으므로 로그인이 불가능합니다.
Realm과 Client를 아래 예시로 설명해 보겠습니다.
위의 그림에서 카카오톡의 고유기능인 캘린더, 서랍, 공지사항을 제외한 각각의 Service(Client)는 같은 Realm을 사용하는 Client라고 볼 수 있습니다. 따로 가입하는 절차 없이 카카오톡 아이디로 바로 이용할 수 있기 때문입니다.
반면에 카카오 뱅크, 카카오 페이, 티스토리 등을 사용시에는 계정을 새로 가입해야하기 때문에, 같은 Realm이라고 볼 수 없습니다.
Realm과 Client 생성
왼쪽 사이드 바에서 Add realm 버튼을 눌러 Realm을 생성해줍시다.
Realm 생성이 완료되면, Clients 메뉴로 들어간 후 Create해줍니다.
Users 메뉴로 들어가 유저를 생성해줍니다.
Credentials 탭으로 들어가 비밀번호를 생성해줍니다.
Clients 메뉴로 들어와 account-console 링크를 눌러줍니다.
Sign in 버튼을 눌러줍니다.
등록했던 아이디와 비밀번호를 입력해주세요.
정상적으로 접속된 것을 확인할 수 있습니다.