본문 바로가기
관리자

전체 글

(1001)
[비공개] Weekly Report - 25/02/10~24/02/16, 1695일차 보호되어 있는 글입니다.
keycloak k8s 배포 1. 배경keycloak을 k8s로 배포하는 방법에 대해 정리한다. 여러 가지 방법들이 있겠지만 요즘 현업에서 가장 많이 사용하는 방식은 k8s로 배포하는 방식이다. 그리고 이전 글에서 정리한 것처럼 infinispan을 외부로 빼서 따로 처리하는 방법도 있겠으나(https://whitepro.tistory.com/1083, https://whitepro.tistory.com/1013, https://whitepro.tistory.com/1015), 이번에는 편의를 위해 embedded 형태로 keycloak과 infinispan은 1개 pod의 JVM 내에 배포하고 infinispan에 대해서는 신경쓰지 않는 기본적인 방법으로 배포를 하는 방법에 대해 정리한다.   2. Dockerfile다음과 같은 ..
[TIL] keycloak first_name, last_name 제거해도 google 소셜 로그인 시 값 생성됨 배경keycloak에서 기본적으로 생성되는 User Profile의 attribute 중, first name과 last name이 있다. 사용자의 이름 정보가 굳이 중요하지 않고, 개별 attribute로 저장하기 위해 이 두 속성값을 제거했는데 구글 소셜 로그인 시에는 자동으로 이 값들이 매핑되어 Users 화면에서 보이는 현상이 있었다.   원인keycloak에서 google용 Identity Provider의 기본 Mapping 설정상, first_name, last_name이 있어서 그렇다. 아래 화면처럼 Google IDP의 Mapper 설정이 비어있지만, spi 코드상 기본적으로 first_name, last_name이 세팅되도록 되어있다.  또 하나 중요한 점은, User를 정의하는 use..
[비공개] Weekly Report - 25/02/03~24/02/09, 1688일차 보호되어 있는 글입니다.
[TIL] keycloak Theme 변경으로 admin console 접근이 불가할 때 해결방법(with 테마 캐시) 배경master realm의 console에서 커스텀한 테마를 적용해볼려고 했다. master는 슈퍼 유저용의 특별한 realm 이므로 굳이 테마를 변경할 필요가 없고, 기본 테마를 사용하는 것이 좋다. 그런데 실수로라도 이렇게 변경한 경우, 테마에 에러가 있으면 master realm의 admin console에 접근이 불가능하여 테마를 원상 복귀할 수가 없다. 해결방법DB를 수정하는 것 외에 다른 방법을 찾지 못했다. admin-cli client로 접근하여 REST API 방식으로 수정할 수 있으나, admin-cli의 client secret을 알아야하는 등의 문제가 있다면 이 방법은 불가하기 때문이다. DB의 값을 직접 수정하는 것은 금기 사항이다. 그러나 realm의 테마 값을 변경하는 것은 ..
kafka Consumer의 offset(Lag)이 1이 지속되는 현상(트랜잭션 적용 시) MSK 설정에 따른 컨슈머 lag 1 발생 현상중복 및 정확히 한번만 처리하기 위한 멱등적 프로듀서 설정 및 카프카 트랜잭션 적용kafka 에서 트랜잭션 커밋 메시지를 찍는데, 이 때 컨슈머가 해당 트랜잭션이 적용된 커밋 메시지의 오프셋은 읽지 않음이것은 kafka에서 발급하는 해당 파티션의 트랜잭션 커밋 메시지가 unreadable이기 때문이며 이에 따라 컨슈머는 트랜잭션이 적용된 커밋 메시지를 읽지 못하므로 항상 컨슈머 lag 1이 발생하게됨 EstimatedMaxTimeLag 추정치 지표 실험14시 10~15분 -> 5분간 kafka 브로커로 직접 100개 호출트랙잭션 미적용 프로듀서라 Offset Lag 014시 25~30분 → 5분간 트랜잭션 적용된 프로듀서를 통해서 100개 호출트랜잭션 적용 ..
github PR re-request review 알림이 slack에 오게 하기 1. 배경github PR 시에 re-request reivew 요청을 했을 때, 이메일로는 알림이 오는데 slack 등으로 알림(webhook)이 안와서 불편했다. 임시방편으로 각 기안자가 리뷰어들을 슬랙에서 태깅해서 호출하고 있었는데, 자동화되지 않은 부분이라 불편함이 있을 것 같아서 직접 시도해보았다.  조직의 workspace가 설정되어있다는 전제 하에 아래 내용들을 기록해둔다. 기본적으로 slack에 github app을 설치하고, /github ... 명령어를 통해 알림을 추가할 수 있으나, PR 상태별로 세분화하거나, 브랜치별로 나눠서 적용하는 방법 등이 없기 때문에 아래 방법으로 나누어 커스터마이징 했다.  2. Slack 설정다음 slack api 페이지에 들어가서 Your apps를 클..
Keycloak Scope 설정 방법(Evaluate, mapper, dedicated, full scope allowed) 1. User Attribute 추가, 토큰에 포함 확인 1.1 User Attribute 추가User Profile에 속성값을 추가하고(nickname), Client Scopes에 추가하여 Realm 내에서의 Scope를 설정할 수 있다. User Profile에서 속성을 추가할 때, Enabled when 값을 default인 Always로 설정하면 아래 내용대로 적용된다.  1.2 토큰 확인scope를 생성할 때 Default로 생성하는 경우 access_token 및 id_token에 기본적으로 포함된다. 다만 따로 설정하지 않으면 token endpoint 응답 body의 "scope" 항목에는 보이지 않는다(아래 그림).  주의할 사항은 로그인하는 사용자의 nickname 값 자체가 설정되어..