본문 바로가기
관리자

Programming-[Backend]/Keycloak

(25)
k8s 환경에서 keycloak multi pod로 실행하기 keycloak은 인스턴스가 여러 개일때 서로 세션 정보 등을 공유하기 위해 infinispan이라는 캐시를 사용한다. 이런 세션 공유를 위해서는 서로 통신해야하는데, 이 때 쓰이는 통신 스택의 종류로 UDP, TCP, Kubernetes 등이 있다. JGroups자바로 작성된 라이브러리로 일대일 또는 일대다 통신을 지원한다. 프로세스 그룹을 생성하고 그룹 내 멤버들이 서로 메시지를 주고 받을 수 있게 해준다. 이는 클러스터링, 분산 캐시 및 채팅 애플리케이션에 활용될 수 있다. keycloak의 infinispan도 JGroups를 사용한다. k8s와 같이 pod이 소멸되고 생성될 수 있는 환경에서는 각 pod의 주소를 알아야하는데, 이를 구현하기 위해 keycloak pod들을 headless ser..
[비공개] Keycloak 클라이언트별 Admin 관리자 만들기 보호되어 있는 글입니다.
Keycloak 세부 권한 관리(admin-fine-grained-authz) Master Realm(Master) : Realm Level Realm-Role설명  비고admin• 모든 Realms을 관리 할 수 있는 슈퍼 유저• 새로운 realm을 생성하면 새로운 realm에 대한 권한도 부여됨create-realm• 새로운 Realm을 생성 할 수 있는 권한 기본적으로 생성되는 Master 영역은, 여러 영역을 관리 할 수 있음 : master-realmMaster에 있는 User에게는 다른 영역을 관리할 수 있는 권한을 부여할 수 있음master 영역에서만 여러 영역을 동시에 관리할 수 있음즉, master 영역의 사용자만 master-realm의 역할을 가질 수 있음master-realm 안에서만 부여 가능 (Master > Realm roles 확인 가능)모든 영역이 아..
Keycloak Password Hashing Algorithm: Bcrypt 방식 적용하기 기본으로 지원되는 비밀번호 해싱 알고리즘argon2:: Argon2 (default for non-FIPS deployments)pbkdf2-sha512:: PBKDF2 with SHA512 (default for FIPS deployments)pbkdf2-sha256:: PBKDF2 with SHA256pbkdf2:: PBKDF2 with SHA1 (deprecated) 설정하지 않으면, 기본적으로 Argon2 해시 알고리즘이 사용됨default 알고리즘을 변경하여 사용하고 싶은 경우 하단의 명령어를 서버 시작시 입력 필요-spi-password-hashing-provider-default=에 들어갈 수 있는 알고리즘 리스트argon2pbkdf2-sha512pbkdf2-sha256pbkdf2 -> de..
Keycloak ID(username) 찾기 기능 구현하기 1. ID 찾기 기능필요한 경우가 있을 수 있어 추가적인 SPI(Service Provider Interface)로 개발할 수 있다.다만, ID 찾기 기능은 적용하기에 좀 애매한 부분이 있다. 보안적인 측면에서 문제가 없다고 판단되고 안전하다고 생각될 경우에만 적용해야한다.ID까지 찾을 수 있다면, 악의적인 사용자가 ID, PW 모두 찾아서 계정을 탈취할 수 있다.글로벌 서비스(Google, Figma 등)에서는 제공하지 않는다.따라서 간이로만 작성하였으며, form template과 연동하는 원리를 이해하는 목적으로 작성했다. 추가적인 구현은 필요하다면 추가로 하면 될 것 같다.소스코드는 아래 링크의 forgot-username-extension 부분에서 확인할 수 있다.https://github.co..
keycloak 2차 인증(문자, 이메일) 구현하기 w/ AWS SNS 문자 및 이메일로 본인 인증을 하는 flow를 추가하는 Provider를 생성하고, 사용하는 방법에 대해 다룹니다. 1. 소스 코드keycloak Expert인 dasniko라는 분의 SMS 2차 인증 authenticator 예시 코드https://github.com/dasniko/keycloak-2fa-sms-authenticator함께 올려져있는 영상을 보면 대부분 이해할 수 있음  2. 코드 설명 및 변경2.1 SmsAuthenticator.classaction 메서드에서 사용자가 입력한 Code 값과 내부에서 지정한 Code 값을 비교. 성공과 실패에 따라 context.success(), context.failuareChallenge 등을 호출하여 인증 단계를 진행하고, 사용자에게 보여줄 페이..
Keycloak-infinispan k8s 세팅 관련 공부 내용 23년 8월 글인데, 벌써 keycloak에서는 이런 점들을 업데이트하고 k8s 환경에서 실행할 수 있도록 가이드를 바꿔놨다. 아래 글들은 k8s를 keycloak을 통해서 공부하는데에만 참고하고, 실제 keycloak의 k8s에서의 실행은 아래 문서를 참고하도록 한다.https://www.keycloak.org/getting-started/getting-started-kube   1. 이론 keycloak의 cache 작동 원리에 대해 기술해놓는다. built-in으로 infinispan을 사용하므로 주로 infinispan에 대한 내용을 다룰 것이다. 1.1 Cache의 distributed cache 작동 1.1.1 cache 작동 방식cache는 일반적으로 2가지 모드로 작동한다.Distribut..
[공식 문서] Keycloak DB 설정 Keycloak에서 제공하는 가이드 문서를 요약하는 글입니다.https://www.keycloak.org/server/db Configuring the database - KeycloakBecause cluster nodes can boot concurrently, they take extra time for database actions. For example, a booting server instance may perform some database migration, importing, or first time initializations. A database lock prevents start actions from confliwww.keycloak.org    1. DB Vendor, Driv..