본문 바로가기
관리자

Programming-[Backend]

(407)
[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..
Authorization flows with Keycloak(CIBA, PKCE, Auth-code, SA) 자주 사용하는 Authorization flow들에 관련한 내용들을 정리했다. 그리고 Keycloak을 통해 flow를 설정하는 방법에 대해서도 알아본다. keycloak 25.0.2 사용기본 https로 구성(CIBA flow의 경우에만 http 사용)realm, client 및 user는 특수문자가 들어가지 않게만 잘 만들어주면 됨  1. Authorization code flowRef.) Keycloak Authorization code flow  keycloak console에서 아래와 같이 Standard flow에 체크한다. 기본적으로 브라우저 기반 방식이다. 1. redirect_uri, scope와 함께 keycloak으로 요청을 보내면 keycloak에서 로그인 페이지 표시[GET] ht..
[TIL] Kafka Transaction mode, offset lag = 1 유지 현상 1. 현상진행 중인 프로젝트에서 메시지의 중복 처리를 막기 위해서 멱등적 프로듀서 및 transaction mode를 적용했다. 이럴 경우 2가지 현상이 나타난다.브로커에 쓰는 메시지가 2개씩 생성됨한 번도 메시지가 쌓이지 않았을 때는 consumer의 offset lag이 0이지만, 한 번 쌓이기 시작하면 offset lag이 1로 유지된다.2번 현상 이후, AWS MSK에서 Estimated Max Time Lag은 30초 정도까지 계속 올랐다 내렸다를 반복한다. 이 중 1번 항목은 널리 알려진 사실이지만, 2번 항목은 offset lag이 올라가서 경고를 받을 수 있음에도 불구하고 잘 알려지지 않은 것 같다. AWS Cloud Watch나 Datadog과 같은 툴에서 offset lag의 경보 알림..
[TIL] Spring Java GC, OOM, JVM Heap dump - Memory Analyzer, pmd OOM, GC스프링 빈은 GC 대상이 되지 않는다.Collection 타입의 변수를 static으로 설정 후 프로그래밍 로직상 제거해주는 로직이 없다면 JVM Heap Memory가 계속 쌓이면서 에러가 날 수 있다.JVMJVM Heap Dump를 뜨는 방법이 있고, AWS S3에 쌓을 수 있다.JVM Heap Dump를 분석하는 도구들이 있다. eclipse의 Memory Analyzer 활용Heap Dump 파일을 업로드하면 메모리를 많이 사용한 변수들을 순위 별로 잡아내준다.정적 분석 도구로 pmd 같은 것들을 적용하면 ci flow에 적용하여 미리 OOM이 날 수 있는 부분들을 체크해볼 수 있다.Pod 로드 시 JVM Option상 -XX DirectMemory 지정값은 통상 Xmx 값의 1/10..
[TIL] MySQL 사용 관련 주요 팁 모음: 타입, INET_ATON, FK 물리적으로 걸지 않기 MySQL은 json 필드값들 가상 컬럼으로 잡아주나, 성능이 떨어짐 숫자 타입: unsigned 옵션 줘서 음수 사용 안하게 해서 공간 활용도 높이기 문자열 타입: text 타입은 테이블 바깥 공간에 따로 저장된다(mySQL)postgreSQL의 경우 긴 VARCHAR 타입보다 TEXT 타입이 외부 공간에 저장됨에도 불구하고 속도가 빠르다 TIMESTAMP는 유닉스 epoch라서 2038년 까지만 사용가능(4바이트) MySQL의 INET_ATON 함수: IPv4 주소를 4바이트로 줄여서 저장해줘서 공간 절약하며, 검증도 해줌 Stored Procedure: SQL 쿼리문 등을 DB에 저장해놓는 것. MSSQL, Oracle 실디비 같은건 성능이 좋아서 괜찮은데 MySQL의 경우에는 성능 이슈가 있어서 ..
Keycloak - 12. Keycloak 확장 KeyCIoak - 모던 애플리케이션을 위한 ID 및 접근관리 | 에이콘출판(주) | 스티안 토르거센, 페드로 이고르 실바 지음, 최만균 옮김서적을 참고하여 요약한 시리즈 글이다.  1. 서비스 공급자 인터페이스 이해하기 1.1 SPI 구조Keycloak의 UI, UX 변경, 데이터 및 기능 통합 등을 사용하기 위해 Keycloak이 제공하는 인터페이스들을 사용할 수 있다. 자바에서의 Service Provider Interface(SPI)의 개념이 Keycloak에도 적용되어있다.  1.2 SPI 목록spi 목록을 확인하기 위해서는 관리 콘솔의 홈페이지 부분에서 Provider Info 부분을 살펴보면 된다. 아래 그림처럼 social 이라는 검색어를 입력해보면 Keycloak에 social SPI를 ..
Keycloak - 11. 토큰 및 세션 관리 KeyCIoak - 모던 애플리케이션을 위한 ID 및 접근관리 | 에이콘출판(주) | 스티안 토르거센, 페드로 이고르 실바 지음, 최만균 옮김서적을 참고하여 요약한 시리즈 글이다.  1. 세션 관리 세션은 클라이언트의 인증 여부, 인증 기간, 재인증 시기 등을 결정한다. 따라서 세션을 활용하면 동일한 영역 내의 서로 다른 클라이언트를 인증하는 Single Sign On을 제공할 수 있다. 세션은 토큰이 유효한 토큰인지 확인하기 위한 보안 계층을 제공하는 역할도 한다. 그리고 메모리에 저장되어 Keycloak의 전반적인 성능에 직접적인 영향을 미친다.  1.1 세션 생명주기 관리 1.1.1 세션 생명주기Keycloak은 주기적으로 만료된 세션을 확인한다. 기본적으로 15분이며 이 값도 조절이 가능하다. K..
Keycloak - 10. 사용자 인증: OTP, WebAuthn, passkey KeyCIoak - 모던 애플리케이션을 위한 ID 및 접근관리 | 에이콘출판(주) | 스티안 토르거센, 페드로 이고르 실바 지음, 최만균 옮김서적을 참고하여 요약한 시리즈 글이다.  1. 인증 흐름 이해 1.1 인증 흐름 목록Keycloak은 다양한 인증 흐름을 제공한다. 일반적인 경우에는 브라우저를 중개자로 사용한다. 좌측 사이드 메뉴에서 Authentication 항목에 들어가보면 다양한 인증 흐름 목록을 볼 수 있다.  브라우저 플로우 외에 clients나 direct grant 등은 realm에 인증하거나, 클라이언트가 토큰 엔드포인트를 통해서 토큰을 획득하기 위해 백채널 요청을 통해 사용자를 인증하는 것과 관련이 있다.  1.2 인증 흐름 설정 1.2.1 인증 흐름 만들어보기새로운 인증 흐름을 ..