사용자 관리

uchan·어제
0

개요

Keycloak 을 이용해 사용자 관리하는 방법 살펴보자

  • 로컬 사용자 관리
  • LDAP 및 액티브 디렉터리 통합
  • 소설 ID 제공자 통합
  • 서드파티 ID 제공자 통합
  • 사용자의 데이터 관리 허용

로컬 사용자 관리

Keycloak 에서 내부 데이터베이스에 저장된 로컬 사용자를 관리하는 방법에 대해 알아보자.
우선 특정 realm 에 유저를 다음과 같이 추가한다.

사용자 자격 증명 관리하기

특정 realm 에서 추가한 사용자는 해당 realm 에 대하여 인증을 수행할 수 있다. 인증 수행할 자격 증명 유형으로는 패스워드, 일회용 키, 보안 기기, X.509 인증서를 통해 수행할 수 있다. 그 중 제일 간단한 인증 유형으로는 패스워드가 있으며 User -> Credential 탭에 접속해 사용자의 패스워드를 리셋시킬 수 있다.

이후 http://localhost:8080/realms/myrealm/account 에 접근하여 사용자 로그인을 할 수 있다. 로그인을 한 후 사용자는 본인의 정보 및 자격 증명을 업데이트 할 수 있다.

지금까지는 어드민이 직접 콘솔에서 사용자를 추가하고 패스워드 설정을 해준 뒤 접근하는 방법을 소개하였지만, 사용자가 직접 회원가입을 하고 로그인할 수도 있다.
현재 로그인 페이지에 진입하면 다음과 같이 보여진다.

username(or email), password 필드 및 로그인 버튼만 구현되어 있는데 admin 콘솔에서 realm settings 에 진입하여 user registraion 을 활성화하면 다음과 같이 보여진다.


사용자 속성 관리

realm settings 에 진입하여 user attribute 도 설정 가능하다.

현재 위 4개만 기본으로 세팅되어 있는데 만약 속성을 더 추가한다면 사용자 생성할 때 추가된 속성도 정의해줘야 된다. 사용자에 대한 속성에 늘어남에 따라 이후 ABAC 를 통해 권한 부여할 때 도움이 될 수 있다.

LDAP 및 액티브 디렉터리 통합

Keycloak 은 다양한 LDAP 서버 수현을 통합해 기존 보안 인프라를 활용하고 keycloak 에서 제공하는 모든 인증 및 인가 기능을 사용할 수 있다. 단일 realm 내에 여러 개의 LDAP 디렉터리를 설정할 수 있고 사용자 인증할 때 준수해야 하는 우선순위를 설정할 수 있다.
Keycloak 콘솔에서 User Federation 에 진입하여 LDAP 제공자를 생성할 수 있다.

LDAP 제공자를 설정할 때 Import User 기능이 디폴트 값으로 활성화 상태이다. 이는 keycloak 에 사용자가 없을 경우 LDAP 디렉터리에서 사용자를 조회하고 LDAP 프로토콜을 사용해 사용자 인증한 뒤 유저를 데이터베이스에 등록한다. 해당 유저는 federated user 로 설정되며 사용자 및 LDAP 제공자 간 링크가 생성된다. (local user 와 구분할 수 있음)

이외에도 그룹 및 역할 동기화를 수행하여 연동하는 방법 및 LDAP 매퍼 기능을 통해 LDAP 의 다양한 정보 유형을 유연하게 매핑하는 방법도 있다.

서드파티 ID 제공자 통합

서드파티 ID 제공자 통합은 keylcoak 을 ID 브로커로 사용해 수행할 수 있다. Keycloak 은 대상 ID 제공자의 사용자 인증 및 복제를 위한 중개서비스 역할을 수행한다.
OIDC 공급자를 동일한 Keycloak 서버의 다른 realm 을 사용하여 실습을 해보자.

먼저 thrid-party-provider realm 을 생성한다.
그리고 다음과 같이 클라이언트와 유저를 생성한다.
Client

User

  • third-party-user 이름으로 유저 생성

이후 myrealm 으로 이동하여 신규 ID 제공자를 생성한다. 필드에는 앞서 만든 서드파티 클라이언트의 정보를 입력하면된다.

이제 http://localhost:8080/realms/myrealm/account 로 진입하여 로그인 페이지를 보면 서드파티 제공자로 로그인할 수 있는 걸 확인할 수 있다.



여기에 아까 만든 thrid-party-user 로 로그인할 수 있다.

Keycloak 에서 만든 제공자 뿐만 아니라 Github, Google 등도 사용할 수 있다. Identity Providers 에서 다양한 제공자도 생성할 수 있다.

0개의 댓글

관련 채용 정보