본문 바로가기
관리자

Programming-[Backend]/Keycloak

(21)
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..
Keycloak Email 서버 테스트 with Mailtrap 1. 목표keycloak으로 email 서버를 활용한 기능을 테스트해본다. 유저의 email을 검증하는 메일을 보내고, 메일의 링크를 눌렀을 때 사용자가 검증된(verified) 상태로 처리되어야한다.  2. Mailtrap 로컬에서 테스트를 위해서 SMTP 서버를 따로 만들 필요가 없다. Mailtrap과 같은 서비스에서 테스트가 가능하다. 아래 글의 Do you really need SMTP server? 항목을 살펴보면 로컬에서 SMTP를 만드는건 굳이 할 필요가 없다고 한다. 이를 제공하는 서비스들이 많기 때문이다.https://mailtrap.io/blog/setup-smtp-server/ Set Up Your Own SMTP Server in 2024 [Windows, Linux, Mac OS..
Keycloak <-> Okta SAML 연동, Attribute to Role 목표Keycloak의 SAML 연동을 테스트하기 위해 Okta 라는 서비스를 사용하여 회원 정보 및 SSO 연동을 구현한다.Okta의 유저로 Keycloak에 로그인하고, Okta의 사용자의 attribute를 Keycloak의 user의 Role로 매핑해본다.(Attribute to Role)  1. Okta 설정 okta에 가입. trial 버전으로 가입하면 무료로 사용해볼 수 있음   application을 생성한다. Create app Integration 버튼을 눌러서 SAML 2.0 방식으로 생성Single Sign on URL, Audience URI를 일단 아무렇게나 입력한다.  다음 화면에서 internal app 으로 선택한다.  생성을 완료하고, 해당 애플리케이션 → Sign on 탭..
Keycloak Device flow 1. Device flow 개념Ref.) https://blog.please-open.it/device_code/  Device flow는 스마트 TV 등 사용자가 인증 정보를 직접 입력하기 어려운 환경에서 스마트폰 등 입력이 편한 환경에서 로그인 할 수 있도록 인증 기기를 대체하는 방식이다. 넷플릭스 등에서 인증 시, QR 코드를 스캔하여 핸드폰으로 로그인하는 방식이라고 이해하면 된다.    2. 백엔드 구현 Keycloak 설정: Client - 특정 client 선택 - Capability Config - OAuth 2.0 Device Authorization Grant를 활성화한다.device flow를 위한 Endpoint로 다음과 같이 로그인 요청을 보낸다.curl --location --re..
[TIL] Keycloak logout Ref.) https://developers.redhat.com/articles/2022/12/07/how-implement-single-sign-out-keycloak-spring-boot#single_sign_on_and_single_sign_out   1. front vs back back channel 방식이 front channel 방식에 비해 더 간소하다back channel 방식은 browser가 반드시 필요하지 않다. 1.1 Back channel 작동방식(Single Sign On으로 여러 client에 로그인이 되어있는 상황이라 가정)각 client에 logout endpoint를 만들어놓는다.1개의 client에서 logout 후 keycloak에 logout을 알린다.keycloak..