티스토리 뷰
이 글에서는 사용자 생성 및 관리 방법, 사용자 자신의 계정을 관리하는 방법, 자격증명을 관리하는 방법과 사용자를 인증하기 위한 서로 다른 ID 저장소 및 ID 제공자 통합 방법 그리고 OpenID Connect, SAML(Security Assertion Markup Language), LDAP(Lightweight Directory Access Protocol)와 같은 오픈 프로토콜을 사용해 사용자의 정보를 가져오는 방법과 같은 ID관리 및 연합과 관련돼 Keycloak에서 제공하는 기능들에 대해 자세히 알아볼것입니다.
1. 로컬 사용자 생성
Keycloak에서 신규 사용자를 생성하는 경우, Users 메뉴를 클링하면 해당 realm에 등록된 모든 사용자가 포함된 리스트가 표시됩니다. 리스트의 우측 상단에는 Add User 버튼이 있습니다. 해당 버튼을 클릭하면 사용자 생성페이지가 표시됩니다.
신규 사용자를 생성하는 경우, 사용자이름 username만 입력하면 신규사용자를 생성할 수 있습니다.
관리자가 사용자에 대한 모든 정보를 사전에 알고 있는 경우 관리 콘솔을 사용해 사용자를 생성하는 것이 편리합니다.하지만 사용 사례에 따라 항상 그렇진 않기 떄문에 사용자가 자신의 realm에 직접 등록하도록 허용하거나 인증 프로세스의 일부로 사용자에게 정보를 요청할 수 있습니다.
Keycloak에서 사용자의 추가적인 정보를 포함시킬 수 있으며, 사용자가 생성된 후에는 사용자가 속한 realm을 통해서만 인증을 할 수 있습니다.
2. 사용자 자격증명 관리
사용자를 생성하면 realm에 인증할 수 있습니다. 해당 인증을 수행하기 위해 사용자 자격증명을 설정해야합니다. Keycloak은 다양한 유형의 자격증명을 통해 다양한 형태의 인증을 지원합니다. 사용자는 패스워드, 일회용키, 보안기기,X.509 인증서 등을 사용해 인증할 수 있습니다.
사용자 자격증명을 관리하려면 사용자 리스트에서 사용자를 선택한 다음 Credentials 탭을 클릭합니다. 해당 탭에는 사용자와 관련된 모든 자격증명이 표시되며, 자격증명 삭제 및 수정과 같은 작업을 수행할 수 있습니다. 사용자에 대한 패스워
드를 쉽게 설정할 수 있는 바로가기(shortcuts)도 제공됩니다.
Keycloak은 자격증명과 관련된 민감한 데이터를 노출하지 않으며 자격증명과 관련된 기본 및 민감하지 않은 데이터만 노출합니다. 보안 요구 사항에 따라 데이터베이스에 저장된 데이터를 암호화할 수도 있습니다.
해당작업을 수행하려면 Password를 입력하고 Temporary 설정을 비활성화합니다. Temporary설정을 비활성화하면 사용자의 최종 패스워드를 생성한다는 것입니다. Set password 버튼을 클릭하여 사용자패스워드를 설정합니다.
패스워드를 설정하면 자격증명 리스트가 위에서 설정한 사용자의 신규 패스워드로 업로드 되었음을 확인 할 수 있습니다. 해당 리스트에서 사용자의 자격증명에 대한 정보(민감하지않음)를 확인할 수 있으며 삭제도 할수 있습니다.
이제 사용자가 realm에 인증할 수 있는지 확인해봅시다.
http://localhost:9090/realms/myrealm/account 에 URL을 통해 해당 Realm의 계정 관리 콘솔에 접근하여 로그인할 수 있습니다.
최초 로그인시 사용자에게 필요한 필수입력 정보를 입력받습니다. 필수 정보 입력 후 submit 버튼을 클릭합니다.
접속 후 화면
3. 사용자 정보 획득 및 검증
Keycloak은 인증 프로세스 과정에서 Required User Actions라는 기능을 사용해 사용자와 상호작용할 수 있습니다. 해당 설정은 사용자가 realm에 인증하기 전에 수행해야하는 작업들입니다.
- 이메일 검증: 이메일 검증이 설정된 경우, 이메일이 사용자 소유가 맞는지 확인하기 위해 사용자에게 이메일 전송
- 패스워드 업데이트 : 사용자에게 패스워드업데이트 요청
- 프로파일 업데이트 : 사용자에게 이름 및 이메일 정보를 통해 사용자에게 프로파일 업데이트 요청
다른 옵션도 존재하지만 위의 작업을 통해 해당 설정이 얼마나 강력한지, 사용자가 인증할때 사용자와 상호작용할 수 있는 방법을 알 수 있습니다.
생성한 test01의 Update profile 작업을 설정하고, 해당 계정의 누락된 정보를 획득합니다. 해당 작업을 수행하기 위해 사용자 리스트에서 test01을 선택하고, Required User Actions 필드에서 사용 가능한 작업 리스트에서 Update profile을 선택합니다. 그다음 Save 버튼을 클릭합니다.
http://localhost:9090/realms/myrealm/account 에 접속하여 로그인하면 프로필 정보를 입력하도록 나타납니다.
4. 자동 등록 활성화
필요한 경우 realm의 계정 자동 등록을 활성화하고 해당 계정 정보의 책임을 사용자에게 위임할 수 있습니다. 수동으로 사용자를 생성하는 것과 달리 Keycloak은 로그인 페이지에 사용자 자동 등록을 위한 링크를 제공합니다. 해당 링크를 사용하려면, 좌측 메뉴에서 Realm setting 버튼을 클릭하고 Login탭을 클릭합니다. User registration을 활성화합니다.
해당 링크를 클릭하면 관리 콘솔에서 사용자를 생성할 때 사용자 것과 동일한 정보를 요청하는 등록 페이지가 표시됩니다. 요구하는 정보를 필드에 입력하고 Register 버튼을 클릭해 신규 사용자를 생성합니다.
http://localhost:9090/realms/myrealm/account 에 접속하면 Register 버튼이 생성된것을 확인 할 수 있습니다.
5. 사용자 속성 관리
Keycloak에서 속성을 활용해 사용자의 추가적인 메타데이터를 관리할 수 있도록 해줍니다. Keycloak은 기본 정보 집합을 활용해 사용자를 식별하고 인증합니다. 또한 해당 정보는 토큰을 검사하거나 사용자 프로파일에 접근하기 위해 사용할 수도 있습니다. 사용자 속성을 관리하기 위해 사용자 리스트에서 해당 사용자를 선택하고 Attributes 탭을 클릭합니다. 각 속성은 키와 텍스트값을 가집니다. 사용자 속성은 사용자에 대한추가 정보를 애플리케이션에 제공하며 ABAC과 같은 다양한 형태의 권한 부여와 같이 다양한 유형의 문제를 해결할 수 있습니다. 속성을 사용하면 해당 속성을 애플리케이션에서 사용하기 위해 프로토콜 매퍼를 생성해 속성을 토큰에 매핑해야 하며 Introspection 토큰 및 userinfo 엔드포인트를 쿼리할때도 속성을 사용할 수 있습니다. Keycloak을 확장하는 경우 Keycloak 확장과 같이 속성을 통해 사용자 계정에 추가적인 정보를 포함해 계정 콘솔을 확장할 수 있습니다. 또한 동일한 방법으로 프로파일 업데이트 페이지를 사용자 정의하기 위해 사용할 수 있습니다. 해당 페이지는 인증 프로세스 과정에서 사용자에게 표시됩니다. 해당 페이지에서 속성을 사용해 인증 프로세스 단계에서 수집된 사용자 정의 정보를 저장할 수 있습니다. 사용자 속성을 활용해 Keycloak의 여러 부분을 확장해 사용자로부터 추가 정보를 획득하고 사용자 속성으로 저장할 수 있습니다. 그리고 사용자 속성은 일반적으로 프로토콜 매퍼를 통해 사용자에 대한 추가 정보를 애플리케이션에 전달하기 위해 사용됩니다.
6. LDAP 및 액티브 디렉터리 통합
많은 조직에서 여전이 LDAP 디렉터리를 디지털 ID에 대한 단일 정보 소스로 사용합니다. Keycloak은 다양한 LDAP 서버 구현을 통합해 기존 보안 인프라를 활용하고 Keycloak에서 제공하는 모든 인증 및 인가 기능을 사용할 수 있습니다.
Keycloak은 LDAP을 사용해 여러 방법으로 통합을 수행할 수 있습니다. LDAP 디렉터리의 데이터를 Keycloak 데이터베이스로 가져오고 LDAP 디렉터리와 동기화된 상태로 유지하는 상태 저장 브로커 역할을 수행할 수 있으며, 자격 증명 확인을 LDAP 디렉터리에 위임하는 상태 비저장 브로커 역할을 수행할 수도 있습니다. 또한 단일 realm 내에 여러개의 LDAP 디렉터리를 설정할 수 있고, Keycloak에서 사용자를 인증 할 때 준수해야 하는 우선순위를 설정할 수 있습니다.
Keycloak에서 사용자 연합이라는 용어는 외부 ID 저장소와 통합하는 기능을 의미합니다. LDAP은 사용자 연합의 한 형태이며, 관리 콘솔의 좌측 메뉴에 있는 User Federation 링크를 클릭해 설정할 수 있습니다.
User federation 메뉴 > Add Ldap providers 버튼 클릭
필수입력 사항 입력 후 save 버튼 클릭
제공자를 선택하면 LDAP 디렉터리와 통합하기 위해 필요한 모든 설정이 포함된 페이지가 표시됩니다. Keycloak은 액티브 디렉터리를 포함해서 대부분이 LDAP 벤더를 지원합니다. Vendor 필드에서 여러 벤더 중 하나를 선택 할 수 있으며, Keycloak은 선택한 벤더에 가장 적합한 디폴트 설정을 찾습니다.
LDAP을 통해 Keycloak을 통합하고자 하는 경우 현재 페이지에 있는 대부분의 설정 즉 , 다양한 연결 설정 및 LDAP 디렉터리 구조와 관련된 설정에 익숙해야합니다. Import Users 설정에서 사용자는 Keycloak이 LDAP 서버의 데이터를 데이터베이스에 취합할 것인지에 대한 여부를 정의할 수 있습니다.
기본적으로 이 설정은 사용자가 LDAP 공급자를 통해 인증할 때마다 해당 사용자에 대한 정보가 데이터베이스에 유지되도록 활성화됩니다. 해당 설정이 기본적으로 활성화된 주요 이유 중 하나는그렇지 않은 경우 Keycloak의 모든 기능을 활용 할 수 없기 때문입니다. 해당 기능이 활성화되지 않은 경우 LDAP 디렉터리를 통해 사용자를 인증하는 브로커만 사용할수 있습니다. 일반적으로 사용자가 인증을 시도하면 Keycloak은 해당 사용자가 데이터베이스에 존재하는지 확인합니다.
사용자가 데이터베이스에 없는 경우, Keycloak은 LDAP 디렉터리에서 사용자를 조회합니다. 인증하려는 사용자가 있는 경우, Keycloak은 LDAP 프로토톨을 사용해 사용자를 인증하고, 인증이 성공하면 데이터베이스에 사용자를 등록합니다.사용자를 등록하면 사용자는 연합 사용자로 설정되며 사용자 및 LDAP 제공자 간에 링크가 생성됩니다.
사용자와 LDAP 공급자 간의 링크는 사용자연합의 중요한 부분입니다. 사용자가 가진 LDAP과 같은 특정 사용자 연합 제공자의 링크를 확인해 Keycloak은 local user와 federated user를 구분할 수 있습니다. 여기서 federated라는 용어는 ID 및 접근 관리 데이터를 공유하기 위해 Keycloak과 외부 ID 저장소(LDAP 디렉터리)간에 생성된 신뢰를 의미합니다.
Keycloak은 LDAP 디렉터리에 데이터를읽고 쓴느 방법을 관리하기 위한몇가지 키 동기화설정을 제공합니다. 다른 작업을 수행하기 전에 Edit Mode 설정을 통해 원하는 동기화 전략을 결정해야합니다. READ_ONLY, WRITABLE 및 UNSYNCED의 세가지 전략 중에서 선택할 수 있습니다.
READ_ONLY 전략을 사용하면 LDAP 디렉터리를 읽기 전용 모드로 사용할 수 있으며, 연합 사용자에 대한 변경 사항은 LDAP 디렉터리에 다시 복제되지 않습니다. 반명 WRITEABLE 전략은 연합 사용자에게 적용된 모든 변경 사항을 LDAP 디렉터리에 복제할 수 있는 강력한 전략입니다.
어떤 전략을 사용해야하는지는 활용 사례에 따라 달라집니다. 특정 환경에서는 LDAP이 사용자가 제어할 수 있는 권한이 제한된 ID의 단일 정보 소스인 경우도 있습니다.LDAP 디렉터리의 ID 관리를 중앙 집중화하면서 Keycloak을 사용해 보안인프라를 현대화 하는 경우 READ_ONLY 전략이 적합합니다.
하지만 LDAP으로 마이그레이션할 계획이 있고, Keycloak을 통해 ID 관리를 중앙 집중화하려는 경우 writable 전략이 해당 전환 과정에서 도움이 될 것입니다. 또한 해당 전략을 통해 LDAP을 활성화 상태로 유지하고 Keycloak을 통해 변경된 사항을 동기화할 수 있습니다.
가장 적절한 동기화 전략을 결정하면 Keycloak에서 제공하는 추가설정을 확인해 동기화 방법을 제어할 수 있습니다. Keycloak을 사용하면 관리 콘솔을 통해 프로세스를수동으로 실행해 사용자정보를동기화하거나 자동으로 동기화가 수행되도록 시간을 설정해 동기화를 수행 할 수 있습니다.
사용자 정보의 수동 동기화를 실행하려면 Synchronize All Users 버튼을 클릭해야합니다. 해당 버튼은 LDAP 제공자를 활성화 하면 됩니다. 제공자를 생성한 다음 바로 전체 동기화를 실행하는 것이 권장 됩니다. 초기 인증을 수행할 때 전체 동기화를 수행하면 사용자 가져오기가 실행되지 않기 때문입니다.또한 마지막 동기화 후 변경된 로컬 사용자 동기화, LDAP 제공자에서 가져온 사용자 제거, 사용자와 LDAP 제공자간의 링크제거 등 수행할여러 작업이 제공돼 사용자를 효과적으로 일반 로컬 사용자로 변경할 수 있습니다.
사용자를 가져온 후에는 필요에 따라 주기적 동기화를 예약할 수 있습니다.전체 또는 부분 동기화에 대한 동기화를 예약할 수 있습니다. 전체 동기화를 수행하면 Keycloak이 데이터베이스에 복제해야하는 LDAP 트리의 변경 사항을 확인해 LDAP에서 생성된 신규 사용자 및 해당 사용자의 갱신된 정보가 지속적으로 동기화됩니다.
부분 동기화는 마지막 동기화를 수행한 후 Keycloak이 신규 사용자를 찾고 기존 사용자를 갱신하기 때문에 좀 더 효율적인 전략을 통해 Keycloak을 최신상태로 유지할 수 있습니다.
7. LDAP 매퍼 이해
사용자와 마찬가지로 Keycloak 또한 LDAP에서다양한 유형의 정보를 가져옵니다. LDAP에서 사용자를 가져오는 방법과 달리 해당 정보는 매퍼를 통해 가져옵니다. LDAP 매퍼는 LDAP에서 Keycloak으로 또는 그 반대로 정보를 매핑하기 위한 Keycloak의 특별하고 강력한 기능입니다. LDAP 매퍼는 사용자, 그룹, 역할, 인증서 또는 액티브디렉터리와 같은 특정 LDAP 제공자를 사용할 때만 접근할 수 있는 정보에 대한 LDAP 데이터 읽기 및 쓰기 방법에 대한 세부적인 제어와 LDAP 통합에 대한 또 다른 확장 포인트를 제공합니다. LDAP에서 특정 데이터 집합을 매핑해야 하는 경우 지원 가능한 매퍼 리스트를 확인하고 적절한 매퍼를 찾으면 됩니다.
신규 제공자를 생성하는경우 Keycloak은 제공자 설정에 기반해 자동으로 매퍼 집합을 설정합니다. 예를 들어 가져오기 모드 또는 편집 모드에 따라 다른 매퍼 집합이 생성됩니다. 따라서 제공자를 생성하기 전에 모드를 설정하는 것이 중요합니다. 해당 설정을 수행하지 않으면 공급자가 생성된 후 설정에따라 매퍼를 변경해야 합니다.
LDAP 제공자와 관련된 매퍼를 관리하려면 사용 중인 제공자의 Mappers 탭을 클릭합니다.
해당 탭에서 사용중인 공급자의 현재 활성화된 모든 매퍼 리스트가 표시됩니다.또한 신규 매퍼를 제공자와 연동할 수 있습니다. 리스트의 우측 상단에 있는 Create 버튼을 클릭해 해당 작업을 수행할 수 있습니다. 사용 가능한 여러 가지 유형의 매퍼가 있으며 각 매퍼는 특정 작업과 관련돼 있습니다.
8. 그룹 동기화
LDAP의 그룹 데이터를 관리하려면 매퍼 리스트 맵퍼를 클릭합니다.
Add mapper 클릭
신규 매퍼이름을 입력하고 Mapper Type 필드에서 group-ldap-mapper를 선택 후 저장합니다.
해당 페이지의 설정 중 일부는 LDAP 트리에서 그룹을 설정하는 방법과 관련이 있습니다. 예를 들어 그룹이 속한 DN(Distinguished Name)을 제공해야합니다. 해당 속성은 그룹 이름을 가져오기 위해 사용되며, Keycloak이 사용자가 속한 그룹을 자동을 검색할 수 있도록 LDAP 트리에서 멤버십 정보를 정의하기 위해 사용됩니다.
group-ldap-mapper 유형은 LDAP으로부터 그룹을 가져오는 방법을 설정하기 위한 몇가지 설정을 제공합니다. 일부 설정은 LDAP 트리에서 그룹이 구성되는 방식에 따라 달라집니다.
해당 매퍼를 생성하는 첫번째 단계는 LDAP 트리에서 그룹 위치를 설정하는 것입니다. 해당 작업을 수행하려면 전체 그룹이 위치한 베이스 DN을 포함해 LDAP Groups DN 필드를 작성해야합니다. 또한 몇몇 기준에 따라 그룹을 가져와야하는 복잡한 LDAP 트리가 있는 경우 추가 필터를 제공해야 합니다. LDAP Filter 필드를 사용해 해당 작업을 수행할 수 있습니다.
Keycloak은 그룹 엔트리에 정의된 오브젝트 클래스를 기반으로 베이스 DN에서 그룹 엔트리를 조회합니다. Group Object Classes 필드를 사용해 오브젝트 클래스를 설정할 수 있습니다.
다음 단계는 Keycloak에서 그룹 엔트리 정보를 Keycloak과 매핑하는 방법을 설정하는 것입니다. 그룹 이름은 Group Name LDAP Attribute 필드를 통해 해당 엔트리에서 매핑될 수 있습니다. 해당 필드는 그룹 이름을 저장하기 위해 사용하는 LDAP 속성으로 변경할 수 있습니다. 일반적으로는 CN(Common Name) 속성으로 사용합니다.
이제 LDAP에서 그룹을 검색하고 해당 정보를 Keycloak에 매핑하는 방법을 이해했기 떄문에 그룹계층 및 사용자 멤버십을 매핑하는 방법을 알아보겠습니다.
LDAP에서 그룹은 일반적으로 조직 트리를 나타내기 위해 계층 구조로 구성됩니다. Keycloak을 사용하면 LDAP에서 그룹을 가져올 때 해당 트리를 자동으로 생성해 그룹 계층 구조를 매핑하고 유지할 수 있습니다. 첫번째 Membership LDAP Attribute 필드를 사용해 계층 구조에서 그룹 간의 관계를 추론하는데 사용되는 속성을 설정하는 것입니다. Keycloak은 해당 속성값을 확인해 하위 그룹을 조회합니다. 해당 포맷은 일반적으로 다른 그룹 엔트리의 FQN(Fully Qualified Name)을 사용합니다. 또한 Keycloak은 LDAP의 사용자 멤버십을 매핑해 사용자를 가져오는 경우 사용자가 속한 그룹에 사용자를 자동으로 할당합니다. 해당 작업을 수행하기 위해 LDAP에서 멤버십을 설정하는 방법에 대해 다른 전략을 설정할 수 있습니다. User Groups Retrieve Strategy 필드를 사용해 그룹의 member 속성에 따라 사용자 멥버십 자격을 가져올지(그룹계층 구조를 가져오는 것과 유사함) 또는 LDAP 사용자 엔트리에 포함된 다른 속성을 통해 멤버십 자격을 가져올지 여부를 선택할 수 있습니다. 동기화 측면에서는 매퍼를 사용하면 그룹 정보를 LDAP 디렉터리와 동기화하는 방법과 그룹을 Keycloak으로 가져오는 방법을 세부적으로 제어할 수 있습니다.
쓰기 권한을 가진 LDAP 제공자를 사용하는 경우, 매퍼는 기본적으로 사용자 멤버십을 포함해 LDAP에서 가져온 그룹에 대한 변경 사항을 재작성합니다. 해당 작업은 그룹 정보를 가져와 LDAP에 다시 동기화하는 방법에 대한 다양한 전략을 제공하는 Mode 필드를 통해 수행됩니다.
기본적으로 LDAP에서 가져온 그룹은 Keycloak에서 최상위 그룹으로 생성됩니다. 상황에 따라 LDAP에서 가져온 그룹을 로컬 그룹과 구별하기 위해 Keycloak의 특정 그룹에 포함시키는 것이 유용할 수 있습니다. 해당 작업을 수행하려면 Groups Path 필드를 Keycloak의 기존 그룹으로 설정하면 됩니다.
9. 역할 동기화
그룹과 마찬가지로 역할도 특정 매퍼를 사용해 LDAP에서 매핑됩니다. 역할 데이터를 가져오려면 매퍼 리스트의 우측 상단 코너에 있는 Add mapper 버튼을 클릭합니다.
신규 매퍼의 이름을 입력하고 Mapper Type필드에서 role-ldap-mapper를 선택합니다.
해당 설정은 주로 Keycloak이 LDAP 트리에서 엔트리를 조회하는 방법을 설정하는 것입니다.
사용자가 Keycloak에 인증할 때마다 Keycloak에서 역할을 자동으로 가져옵니다. 또한 Keycloak을 사용해 매퍼를 생성한 후 수동으로 동기화를 실행 할 수 있습니다.
역할을 가져오는 경우 Keycloak은 기본적으로 해당 역할을 realm역할로 생성합니다. realm의 사용자는 LDAP에 설정된 역할과 동일한 역할이 자동으로 설정됩니다.
해당 작업은 Use Realm Roles Mapping 필드를 통해 수행되며, 또한 Keycloak에서 가져온 역할이 특정 클라이언트의 클라이언트 역할로 생성되도록 비활성화 할 수 있습니다.
마지막으로 Keycloak을 통해 데이터를 가져오는 방법을 세밀하게 제어할 수 있고, LDAP에서 가져온 정보에 변경 사항이 발생할 때마다 해당 변경 사항이 LDAP 반영되는 것을 확인했습니다.
10. 서드파티 ID 제공자 통합
다양한 개방형 표준 프로토콜을 활용해 keycloak을 서드파티 ID 제공자와 연동할 수 있습니다. ID 제공자는 keycloak 및 ID 제공자 간의 크로스 도메인 트러스트(cross-domain trust)를 생성하기 위해 사용자 연합을 사용합니다. 크로스 도메인 트러스트는 사용자의 ID 데이터를 공유하고 사용자를 keycloak에서 생성, 인증 그리고 인가하기 위해 사용됩니다.
서드파티 ID 제공자 통합은 keycloak을 ID 브로커로 사용해 수행할 수 있습니다. keycloak은 대상 ID 제공자의 사용자 인증 및 복제를 위한 중개 서비스 intermediary service 역할을 수행합니다.
ID 브로커는 다양한 유형의 문제들을 해결할 수 있습니다. 레거시 ID 및 접근 관리 시스템의 통합 포인트로서 소셜 제공자와 통합하기 위해 사용할 수 있습니다. 또는 비즈니스 파트너 및 조작에서 ID 데이터를 공유할 수 있습니다.
keycloak에서 지원하는 보안 프로토콜에 따라 두가지 주요 유형의 ID 제공자와 통합을 수행할 수 있습니다.
- SAML v2
- OpenID Connect v1.0
ID 브로커를 통해 사용자에게 훨씬 더 나은 경험을 제공할 수 있으며, 사용자들은 realm에 인증 및 가입하기 위해 기존 계정을 활용할 수 있습니다. 해당 사용자들이 생성되고 서드파티 제공자로부터 해당 정보를 가져오면, 해당 사용자들은 realm의 사용자가 되고 keycloak에서 제공되는 모든 기능을 사용할 수 있습니다. 또한 realm의 보안 정책을 준수합니다.
11. OpenID Connect ID 제공자 생성
keycloak을 실행하여 third-party-provider realm을 생성합니다.
Client ID : broker-app 으로 입력한 후 다음
Access Type 설정을 Confidential로 변경하기 위해 Client authentication을 활성화
Root URL : http://localhost:9090/realms/third-party-provider/broker/oidc/endpoint로 입력 후 저장
추후 ID 제공자를 설정할 때 클라이언트 시크릿을 사용할 것이기 때문에 반드시 적어둬야합니다.( Copy 아이콘 클릭 )
third-party-provider realm에 third-party-user 사용자를 생성하고 패스워드를 설정합니다.
myrealm realm에 신규 ID 제공자를 생성합니다. 해당 작업을 수행하려면 좌측 사이드 메뉴에서 Identity Providers를 클릭합니다. Identity Providers 페이지에서 신규 제공자를 생성하거나 realm에 제공자가 아직 설정되지 않은 경우 신규 제공자를 생성하기 위해 제공자 유형을 선택하기 위한 메시지가 표시됩니다.
제공자 리스트에서 OpenID Connect v1.0 을 선택하면 제공자 설정 페이지로 이동합니다.
설정페이지에는 읽기 전용 Redirect URL 필드가 있으며 해당 값은 broker-app 클라이언트의 root URL로 설정된 URL입니다. 해당 URL은 사용자가 ID 제공자를 통해 인증되면 리다이렉트되는 위치입니다.
OpenID Connect Provider(OP)는 특정 엔드포인트에서 사용할 수 있는 문서를 통해 엔드포인트와 상호 작용하기 위해 사용할 수 있는 엔드포인트를 공개합니다.
해당 엔드포인트를 사용하면 Provider settings 페이지에 있는 대부분의 설정은 통합하고자 하는 OP의 정보를 사용해 자동으로 채워지기 떄문에 ID 제공자를 신속하게 설정할 수 있습니다.
Discovery endpoint : http://localhost:9090/realms/third-party-provider/.well-known/openid-configuration
Display Name : My Third-Party Provider
Client Authentication : Client secret send as post
Client ID : broker-app
Client Secret : <복사한 클라이언트 시크릿>
입력 후 저장 버튼 클릭
이제 신규 생성된 제공자를 통해 신규 사용자가 인증을 수행하고 realm에 등록할 수 있는지 테스트해보겠습니다.
http://localhost:9090/realms/myrealm/account에 접속합니다.
11. 사용자 데이터 관리
관리자 권한의 관리자 콘솔을 통해 사용자를 관리하는 방법에 대해 알아봤습니다. 또한 realm에 사용자를 자체 등록하는 방법도 알아봤습니다. 하지만 keycloak 주요기능 중 하나는 사용자들이 keycloak 계정 콘솔 서비스를 통해 자신의 계정을 관리 할 수 있도록 한느 것입니다.
keycloak 계정 콘솔은 keycloak에서 제공하는 일반 애플리케이션이며 계정 콘솔에서 사용자들은 자신들의 계정을 관리할 수 있습니다. 또한 다음과 같은 작업을 수행할 수 있습니다.
- 사용자 프로파일 업데이트
- 사용자 패스워드 업데이트
- 2차 인증 활성화
- 인증된 애플리케이션을 포함해 애플리케이션 보기
- 다른 세션에서 원격으로 로그아웃하는 것을 포함해 열려있는 세션보기
- 개인 정보 : 사용자는 이메일, 이름과 같은 프로파일 정보를 관리할 수 있다.
- 계정 보안 : 사용자는 자격증명 관리 , OTP 및 보안 기기를 각각 사용해 이중 및 멀티인증을 설정할 수 있으며 계정 활동을 추적할 수 있다.
- 애플리케이션 : 사용자는 로그인, 로그아웃한 애플리케이션과 애플리케이션에 부여한 권한을 관리할 수 있다.
계정 콘솔이 일반 애플리케이션이기 떄문에 keycloak은 사용자가 계정 데이터를 인증하고 접근 할 수 있도록 realm에 account 클라이언트를 자동으로 생성합니다. realm에 사용자가 생성된 경우 manage-account 클라이언트 역할이 자동으로 부여됩니다. 해당 역할은 account 클라이언트에 포함되며 계정 콘솔에 대한 접근 여부를 제어합니다. 사용자의 계정 콘솔을 비활성화하려면 사용자의 역할 매핑을 변경해 해당 역할을 삭제해야합니다.
사용자는 keycloak에서 계정 콘솔을 취향에 맞게 꾸밀수 있으며 사용자의 추가 정보를 저장하고 획득한 다음 계정 콘솔에서 정보를 표시하는 방법과 관리하는 방법 또한 설정할 수 있습니다.
'WEB' 카테고리의 다른 글
Keycloak 시작하기 8 (0) | 2025.02.19 |
---|---|
Keycloak 시작하기 7 (0) | 2025.02.18 |
Keycloak 시작하기 5 (0) | 2025.02.11 |
Keycloak 시작하기 4 (1) | 2025.02.10 |
Keycloak 시작하기 3 (1) | 2025.02.03 |
- Total
- Today
- Yesterday