본문 바로가기
관리자

전체 글

(1030)
keycloak용 백엔드 서버: 다중 약관 동의 설계 배경백엔드 서버는 keycloak을 보조하기 위한 역할로 존재. 기본적으로 keycloak은 인증만 목적으로하는 모듈임CIBA(Client Initiated Backchannel Authentication) 등 중간 서버가 있어야하는 인증 방식이 필요한 경우다중 약관 동의, 서비스별 추가 데이터 등이 필요한 경우 다중 약관 동의 항목 설계 필요성keycloak에서는 기본적으로 단일 약관 내용만 제공하고, 동의 여부도 timestamp를 기록하기 위한 update 방식을 채택하므로 요구사항을 충족하기에는 어려움이 있음. 개별로 SPI, entity 등을 개발하여 keycloak에 적용하는 경우 keycloak version up 대응 시 위험 요소로 작용할 수 있음 따라서 백엔드 서버에서 약관 동의 항목용..
keycloak v26.1.2 image build issue( w/ Docker engine 28.x.x) 배경keycloak을 26.0.1 버전을 사용하다가, 26.1.2 버전으로 업그레이드 하면서 Docker image build 관련 이슈가 발생했다. 아래 코드처럼 Dockerfile을 작성하였는데 이미지 빌드까지는 잘 되는데 Runtime에 에러가 발생했다. Dockerfile 예시ARG AWS_ECR_REPOSITORY_FE_URIFROM ${AWS_ECR_REPOSITORY_FE_URI}:latest AS baseFROM quay.io/keycloak/keycloak:26.2.1 AS builderWORKDIR /opt/keycloakENV KC_HEALTH_ENABLED=${KC_HEALTH_ENABLED:-true} \ KC_METRICS_ENABLED=${KC_METRICS_ENABLE..
[비공개] Weekly Report - 25/04/21~24/04/27, 1765일차 보호되어 있는 글입니다.
Keycloak Infinispan 통신 방식 정리: udp, jdbc-ping, kubernetes 배경keycloak은 여러 instance간 infinispan cache를 통해 세션 정보 등을 동기화한다. 그리고 이런 동기화에 쓰일 통신의 스택 정보를 KC_CACHE_STACK 옵션을 통해 설정할 수 있다. https://www.keycloak.org/server/caching#_transport_stacks 26.0.1 버전까지 udp가 기본 스택이였으나 26.2.1로 버전업을 하면서 jdbc-ping 방식이 default로 변경되었다고 한다. 어짜피 k8s 환경이라 kubernetes 스택을 사용하고 있었는데, 이번 기회에 정리를 좀 하고 가야겠다는 생각이 들었다. 각 방식별 특징 1. UDPUDP는 보통 네트워크에서 TCP/UDP로 OSI 7 Layer 개념에서 4 Level Layer로..
keycloak upstream header is too big. 502 Gateway Error w/ nextAuth 배경keycloak을 k8s headless service로 운영하고, 앞단에 nginx proxy 서버를 두는 구조에서 클라이언트 쪽에서 아래 메시지와 함께 에러가 발생했다. upstream sent too big header while reading response header from upstream Syntax: client_header_buffer_size size; Default: client_header_buffer_size 1k; Context: http, server 그러면서 502 Gateway Error가 나는 문제였다. 원인클라이언트에서 nextAuth.js 라는 라이브러리를 사용하고 있었는데, keycloak에서 내보내는 3가지 쿠키(KEYCLOAK_SESSION, KEYCLOA..
Keycloak 성능 테스트 - 특정 url 호출 확인(userinfo) 이전 글에 이어서 특정 endpoint를 호출하는 커스텀 성능 테스트에 대해 기록한다. https://whitepro.tistory.com/1115 keycloak benchmark 성능 테스트 w/ kubernetes whitepro.tistory.com 소스 코드를 까서, get 요청을 아래처럼 변경해주었다. 주석 부분이 기본으로 있던 Get 요청이다.package keycloak.scenario.basicimport keycloak.scenario.{CommonSimulation, KeycloakScenarioBuilder}import org.keycloak.benchmark.Configimport io.gatling.core.Predef._import io.gatling.http.Predef...
Keycloak CODE_TO_TOKEN_ERROR: cookie와 roles 배경keycloak에서 일반 유저가 로그인을 하다가 CODE_TO_TOKEN_ERROR가 발생했다. authorization code를 클라이언트가 keycloak으로부터 발급받고, 이를 다시 keycloak에 전달하여 keycloak에서 access_token을 받아오는 과정에서 에러가 난 것이다. 처음에는 원인을 잘 몰라서 헤맸지만 특정 유저에게서만 에러가 발현된다는 점에 착안하여 문제 범위를 좁혀나갔다. 그리고는 특정 유저들에 roles가 너무 많이 할당되어 에러가 나는 것을 확인하게 되었다. 원인roles를 너무 많이 부여하면, token에도 resource_access 항목이 길어지고 token이 포함된 cookie의 용량이 커지게 되거나 get 요청이 과다하게 길어지면서 로그인에 실패할 수 ..
[비공개] Weekly Report - 25/04/14~24/04/20, 1758일차 보호되어 있는 글입니다.