{ "count": 138, "byId": { "8d6b8a7f-e08e-4c9f-9772-a14a9d569260": { "kind": "SETUP", "title": "TTL 로 고아 세션을 골라내 지운다", "version": null }, "d53181b9-bb28-4703-97ed-98adfb5b18dc": { "kind": "SETUP", "title": "cookie secret 을 갈아치우고 로그인해 있던 세션이 어떻게 되는지 본다", "version": null }, "9bb0b051-c158-497f-a744-b24769c93783": { "kind": "SETUP", "title": "신원 헤더를 위조해 보내고 어디까지 도착하는지 본다", "version": null }, "cf2e783c-424b-4167-aa27-3bd6b5f46ee2": { "kind": "SETUP", "title": "flannel.1 에 200ms 를 넣고 커넥션 풀이 고갈되는 것을 본다", "version": null }, "b90d719f-39fb-4bab-a263-0e32eedb2b36": { "kind": "SETUP", "title": "한 방향만 끊어 보고 raw PREROUTING 까지 내려간다", "version": null }, "d845adc8-be2c-4471-aa1d-7e4db864c471": { "kind": "SETUP", "title": "기계 전원을 뽑고 쿠버네티스가 알아채는 시각을 잰다", "version": null }, "91ce17ad-758d-4a63-be5b-489786609557": { "kind": "SETUP", "title": "PostgreSQL 을 진짜로 크래시시키고 잃은 로그인을 센다", "version": null }, "bf169fef-f900-4247-88f8-427742ae3fe9": { "kind": "SETUP", "title": "PostgreSQL 을 정상 종료시키고 네 경로를 잰다", "version": null }, "4f32b469-185a-4dea-8eba-599864a3b476": { "kind": "SETUP", "title": "deploy 훅 파일 하나를 넣고 nginx 워커가 저절로 갈리는지 확인한다", "version": null }, "9349a3fe-5234-48ae-af9f-029ffc0d2296": { "kind": "SETUP", "title": "인증서를 강제로 갱신하고 밖에서 보이는 일련번호가 언제 바뀌는지 잰다", "version": null }, "186443e8-a32a-4a94-8609-845a4247d120": { "kind": "SETUP", "title": "카나리아 Secret 을 심고 네 경로에서 평문이 어디까지 나오는지 본다", "version": null }, "e53c5947-e1df-400a-ad79-e9d55b1da452": { "kind": "SETUP", "title": "이미지 태그를 올렸다 내리며 롤백이 언제 막히는지 가른다", "version": null }, "7dc48b91-e31b-455c-9a9d-c766f95ff491": { "kind": "SETUP", "title": "스키마를 통째로 지우고 덤프 하나로 되살아나는지 본다", "version": null }, "5296a106-4c42-437d-b721-33a5e53a045c": { "kind": "SETUP", "title": "IdP 쪽에만 로그아웃 주소를 넣고 한쪽만 고치면 안 퍼지는 것을 확인한다", "version": null }, "3421185f-5f3c-4263-9455-6243306e9fc9": { "kind": "SETUP", "title": "두 앱을 한 로그인으로 묶고 IdP 세션만 끊어 앱 세션이 남는지 본다", "version": null }, "7447ccbf-1800-43a4-a9d2-8ac774965c4b": { "kind": "SETUP", "title": "서명 키를 더한 뒤 옛 키를 지우고 옛 토큰이 언제 끊기는지 본다", "version": null }, "af9645a0-8ca8-481d-9624-69fce6449b7c": { "kind": "SETUP", "title": "Redis 를 0대로 내리고 파드가 Ready 를 유지하는지 본다", "version": null }, "405c4206-9b59-491f-aed1-8b97cfd9f584": { "kind": "SETUP", "title": "같은 refresh token 다섯 개를 동시에 던지고 client session 을 센다", "version": null }, "df2ee798-7f31-4570-a355-11f96c0eea84": { "kind": "SETUP", "title": "토큰을 PostgreSQL 로 옮기고 기본키와 로그아웃 정리를 확인한다", "version": null }, "1e5d05fa-88f4-4ef5-a402-4a520ae4a52d": { "kind": "SETUP", "title": "Redis 를 붙이고 무엇이 옮겨졌는지 빈 목록으로 견준다", "version": null }, "4ef91d43-1f1d-481a-8b6f-5e015d068578": { "kind": "SETUP", "title": "아무 저장소도 주지 않고 Spring 이 무엇을 고르는지 찍어서 확인한다", "version": null }, "975a6d61-4e34-4034-a0d2-01fea3b498a3": { "kind": "SETUP", "title": "DNS-01 으로 와일드카드 인증서를 받고 갱신이 서빙까지 닿게 한다", "version": null }, "0cb0f195-b06b-4f8e-b52e-675eb0918805": { "kind": "SETUP", "title": "Prometheus 와 Grafana 를 올려 클러스터 안을 밖에서 본다", "version": null }, "7c66a553-0008-4294-a27a-687bd1bda0c1": { "kind": "SETUP", "title": "lab host 에 가상화 패키지를 깔고 virsh 가 sudo 없이 돌게 만든다", "version": null }, "7b113a04-180a-40ec-9270-033531c22221": { "kind": "SETUP", "title": "Keycloak 2노드와 PostgreSQL 을 k3s 에 올리고 클러스터가 묶였는지 확인한다", "version": null }, "5e629c2f-e653-4dd9-b1c9-1fe6b2bb181d": { "kind": "SETUP", "title": "k3s server 와 agent 를 게스트 두 대에 깔고 lab host 에서 kubectl 로 본다", "version": null }, "74a7bacf-e5d8-4129-926a-c8cf5cacb8c9": { "kind": "SETUP", "title": "엣지 게스트에 nginx 를 세우고 호스트 DNAT 으로 밖에서 들어오는 길을 연다", "version": null }, "f972ca27-7e18-41c1-9494-59cc6f676ae2": { "kind": "SETUP", "title": "cloud-init 시드로 게스트 세 대를 만들고 SSH 가 키로 붙게 한다", "version": null }, "0b64d23a-f82a-44b4-ad54-e079578977c4": { "kind": "SETUP", "title": "롤링 재시작을 걸고 재시작 전 토큰이 통하는지 본다", "version": null }, "21dce25a-a165-47dc-bb40-2ed9f6f9efea": { "kind": "SETUP", "title": "문장 로깅으로 그 500 을 낸 SQL 을 확정하고 캐시 온도 셋을 재현한다", "version": null }, "b8d7db33-afdc-4e49-9eab-ed4edbbe398e": { "kind": "SETUP", "title": "persistent-user-sessions 를 끄고 A층 결론 넷을 다시 잰다", "version": null }, "95e29500-b535-4246-86db-d569ed814904": { "kind": "SETUP", "title": "7800 을 막고 디스커버리와 트랜스포트를 갈라 끊는다", "version": null }, "4f56ed58-fc82-4ed1-ac87-c356b30c34f7": { "kind": "SETUP", "title": "세션을 공유하는 것이 Infinispan 인지 PostgreSQL 인지 손으로 가른다", "version": null }, "3b05c1f0-13e9-414a-97a6-2078fb4bab26": { "kind": "CONCEPT", "title": "Guest 의 write() 요청부터 virtqueue까지", "version": null }, "5b1de31c-0495-4226-8607-73ed7284b314": { "kind": "CONCEPT", "title": "Guest 의 packet에서 Host Physical NIC까지", "version": null }, "5bcae89b-0873-4a2b-af4a-10e5234c085b": { "kind": "CONCEPT", "title": "KVM 에서 vCPU 가 물리 CPU 에서 실행되기까지", "version": null }, "ecaaa37d-7b33-4cbf-9bc5-4c6caad14ee5": { "kind": "CONCEPT", "title": "VM 아래에 한 번 더 있는 Host block stack — blk-mq · I/O Scheduler · NVMe", "version": null }, "8fafaeea-8746-4537-87a4-679a3a91aa4c": { "kind": "CONCEPT", "title": "완료라는 말의 네 가지 뜻 — write · writeback · flush · 전원 장애 생존", "version": null }, "eead2379-94fe-463a-9e5e-06a01bf2105d": { "kind": "QUESTION", "title": "disk image 는 최종적으로 어느 Host block device 위에 있는가", "version": null }, "480f86ac-86fb-4290-9bf5-584763aa1363": { "kind": "QUESTION", "title": "이 VM 들의 QEMU disk cache mode 는 무엇인가", "version": null }, "decbab8d-9c98-45c6-b5b8-e6162e407299": { "kind": "REFERENCE", "title": "빨라진 구성이 durability contract 를 지운 것은 아닌지 먼저 가른다", "version": null }, "b1cda8c4-d31d-4ae4-a4d9-4103a0ab3109": { "kind": "REFERENCE", "title": "지연 원인을 CPU 로 읽기 전에 storage 계층을 따로 잰다", "version": null }, "ed64d4ff-aa01-48cc-ae68-6a683b025cde": { "kind": "QUESTION", "title": "VM1 의 storage 부하가 VM2 의 지연을 실제로 밀어 올리는가", "version": null }, "77aa0188-5c2b-4f47-bda7-7c66b084968d": { "kind": "QUESTION", "title": "이 호스트의 I/O Scheduler 는 무엇인가", "version": null }, "be3c2c58-1ed4-4eae-876a-3114faa61c94": { "kind": "QUESTION", "title": "Guest 의 fsync() 지연과 Host storage 지연은 같이 오르는가", "version": null }, "892b6087-8961-486c-b4d9-d3dd46bc2605": { "kind": "CONCEPT", "title": "/dev/vda 뒤에 있는 것 — qcow2 · RAW · Host block device", "version": null }, "ae69e2e1-1a3b-4ae3-ae2a-572af07b95d7": { "kind": "QUESTION", "title": "이 disk image 는 qcow2 인가 RAW 인가, 그리고 Guest 가 보는 크기와 Host 가 실제로 쓰는 크기는 얼마나 다른가", "version": null }, "1f76d54b-bb17-4174-8128-0c2d71d4256f": { "kind": "QUESTION", "title": "이 호스트의 /dev/vda 는 어떤 backend 에 붙어 있는가", "version": null }, "274c5636-33f6-4c19-a54b-d2a96af31289": { "kind": "REFERENCE", "title": "Guest 안에서 본 disk 로 backend 를 단정하지 않는다", "version": null }, "484fd832-c7d3-413e-897a-97892e4e10ac": { "kind": "QUESTION", "title": "이 호스트에서 vhost-net 이 실제로 packet datapath 를 맡고 있는가", "version": null }, "397c4789-0272-449b-86d6-2c4a3a122401": { "kind": "QUESTION", "title": "VM1 과 VM2 의 TAP/vnet interface 는 무엇이고 어디에 붙어 있는가", "version": null }, "38716d7f-1aa1-48d8-ab4c-3fc505332128": { "kind": "QUESTION", "title": "이 호스트의 가상 머신 네트워크는 Bridge 인가 NAT 인가 Routing 인가", "version": null }, "ca36f0db-9028-4761-91a8-afb7eb30f2b9": { "kind": "REFERENCE", "title": "Keycloak 실험 결과를 애플리케이션 원인으로 읽기 전에 network 계층을 따로 검증한다", "version": null }, "68a848c7-eaff-4421-ad25-de21673ca40c": { "kind": "REFERENCE", "title": "packet 이 어디서 끊겼는지는 계층마다 capture 해서 가른다", "version": null }, "79ac61d6-cbe6-483b-9961-02ca8c02b5c2": { "kind": "QUESTION", "title": "부하 중 network 가상화가 지연을 바꿀 만큼 호스트 CPU 를 쓰는가", "version": null }, "600a2621-f6d8-42df-9629-7db65011545d": { "kind": "QUESTION", "title": "Host Nginx 에서 Keycloak 까지 packet 은 실제로 어디를 지나는가", "version": null }, "1a996f8d-b04e-49d2-88ef-4877e21f7c0e": { "kind": "QUESTION", "title": "이 가상 머신들의 virtio-net 에 multi-queue 가 켜져 있는가", "version": null }, "bded6560-dc8d-473d-966c-5b037bb84c4c": { "kind": "QUESTION", "title": "QEMU backend 와 vhost-net 의 차이가 이 호스트에서 실제로 보이는가", "version": null }, "32d0be7d-d88e-4760-8d91-35d3a233a99a": { "kind": "CASE", "title": "Fetch 타입이 아닌 조회 방식으로 인한 N+1", "version": null }, "c1158754-e3d2-47b8-bb41-81787c0ca84b": { "kind": "CASE", "title": "Collection Fetch Join Pagination의 In-memory Paging", "version": null }, "1b59e6de-16f1-42b2-81bb-01d6198e34bf": { "kind": "QUESTION", "title": "QEMU 메모리는 vCPU 가 도는 NUMA node 와 같은 node 에 있는가", "version": null }, "6a60abe7-ea2c-46c2-bb9f-8281bfbe9644": { "kind": "QUESTION", "title": "balloon target 을 바꾸면 게스트가 쓸 수 있는 메모리는 어떻게 따라 움직이는가", "version": null }, "a05fe2a6-eb7c-4bcc-a7da-58e729436468": { "kind": "QUESTION", "title": "호스트 메모리 압박이 게스트 애플리케이션 지연을 실제로 밀어 올리는가", "version": null }, "380d4975-3be5-451d-aede-2e24c5a2a09e": { "kind": "QUESTION", "title": "NUMA remote access 가 이 작업의 지연을 실제로 바꾸는가", "version": null }, "63aef96b-03ef-4dbd-9ba6-9e61c6e695e1": { "kind": "QUESTION", "title": "이 가상 머신들에 virtio-balloon 이 붙어 있는가", "version": null }, "074a1cb4-cea8-4dad-bc4c-899692ff9aa9": { "kind": "QUESTION", "title": "게스트 page fault 증가는 workload 변화를 따라가는가", "version": null }, "a2cbc828-59ab-4e70-916a-d053e71960ae": { "kind": "QUESTION", "title": "호스트 major fault 와 스토리지 지연은 같은 시간축에서 함께 움직이는가", "version": null }, "50730203-df5f-4604-8535-7e93ab6fb724": { "kind": "QUESTION", "title": "이 호스트의 THP 정책과 huge page 상태는 무엇인가", "version": null }, "fa5b3782-9fcf-4113-8f51-a55c8023b2db": { "kind": "QUESTION", "title": "QEMU 프로세스가 실제로 붙잡고 있는 호스트 메모리는 얼마이고 어떻게 나뉘어 있는가", "version": null }, "67285d51-7eaf-4540-9577-cfd0b273b40e": { "kind": "QUESTION", "title": "이 호스트의 가상 머신들은 설정한 메모리와 지금 잡고 있는 메모리가 얼마나 다른가", "version": null }, "63fa33e5-9957-4d28-8d3c-c75735a73bd6": { "kind": "REFERENCE", "title": "메모리 증상 하나로 계층을 단정하지 않는다", "version": null }, "ded41b52-ec08-4231-a54c-86d6c80d38f0": { "kind": "REFERENCE", "title": "메모리 실험 결과에는 Host · VM · Workload 조건을 함께 남긴다", "version": null }, "f460e9a2-35ef-46ff-81cf-b36627a1b231": { "kind": "QUESTION", "title": "가상 머신 RAM 이 HugeTLB 로 명시적으로 backing 되어 있는가", "version": null }, "d3e8501f-e1b5-4f8f-aa9a-89f9c89a308e": { "kind": "QUESTION", "title": "지금 게스트와 호스트에서 swap 이 실제로 오가고 있는가", "version": null }, "647d6d11-5bb2-4028-a530-b10c8925aa11": { "kind": "CONCEPT", "title": "Host 메모리 압박이 Guest 와 스토리지까지 내려가는 경로", "version": null }, "68811272-5352-4409-aa20-7e22e601ede8": { "kind": "CONCEPT", "title": "NUMA 에서는 vCPU 배치와 메모리 배치를 함께 본다", "version": null }, "ebdf93d7-2dcb-4fc8-91b9-2364ac8196e6": { "kind": "CONCEPT", "title": "virtio-balloon 이 Guest 메모리를 회수하고 돌려주는 방식", "version": null }, "2f2ffafc-91ff-4971-a6a8-7c0e7d844ca2": { "kind": "CONCEPT", "title": "Guest 메모리 주소가 물리 RAM 에 닿기까지 — GVA · GPA · HPA", "version": null }, "efce9a6e-5f5d-45ec-86e5-056d8cb1b8d2": { "kind": "CONCEPT", "title": "Huge Page 를 VM 에서 볼 때 갈라지는 세 자리", "version": null }, "e80853fa-98b8-4cc3-a2df-427c7147794b": { "kind": "CONCEPT", "title": "VM 에서 page fault 는 세 계층에서 따로 일어난다", "version": null }, "688c6c02-c1bd-4cd2-a615-2396db145386": { "kind": "QUESTION", "title": "이 호스트의 NUMA 토폴로지는 가상 머신 성능을 고려해야 할 구조인가", "version": null }, "d103bb81-45df-402f-86e5-e41d66ed7f8d": { "kind": "QUESTION", "title": "Keycloak 작업의 VM Exit 분포는 idle · CPU-bound · I/O-bound 와 어떻게 다른가", "version": null }, "62319064-17ef-4b2f-bf8b-e363cd0e36a6": { "kind": "QUESTION", "title": "CPU pinning 전후로 Keycloak 지연과 vCPU 스케줄링 변동이 달라지는가", "version": null }, "116b806c-b176-401c-9363-1489fffb721c": { "kind": "QUESTION", "title": "cgroup CPU 제한과 호스트 vCPU 경쟁을 지표로 가를 수 있는가", "version": null }, "723d8930-9e82-4552-8376-038a6446ec71": { "kind": "QUESTION", "title": "vCPU 를 늘릴수록 이 호스트에서 Keycloak 처리량도 계속 오르는가", "version": null }, "2d058fb5-01f1-4be8-80bb-0e377868573c": { "kind": "QUESTION", "title": "가상 머신 두 대를 CPU-bound 로 만들면 게스트 steal time 은 얼마나 오르는가", "version": null }, "2acec7d5-3eaf-4115-9d61-45647c4ec01e": { "kind": "QUESTION", "title": "운영 서버는 CPU 가상화 계층의 영향을 받는 구조인가", "version": null }, "cd58d35d-3a93-4682-82b8-b64ce3a8813c": { "kind": "QUESTION", "title": "pinning 없이 vCPU 스레드는 호스트 논리 CPU 사이를 옮겨 다니는가", "version": null }, "61b7486f-5dab-41df-8f4f-e8fc21d88617": { "kind": "QUESTION", "title": "실제 작업에서 주로 발생하는 VM Exit 은 무엇인가", "version": null }, "4a2d3332-81c3-44fa-a4fb-216a41abb504": { "kind": "QUESTION", "title": "게스트가 유휴 상태일 때 vCPU 스레드는 이 테스트 환경에서 어떻게 보이는가", "version": null }, "da3a7b56-5691-4a9f-90c5-3a1a5d0f0013": { "kind": "QUESTION", "title": "Keycloak 동시 refresh 실험 중 CPU 가상화 계층이 결과를 흔들 만큼 포화되는가", "version": null }, "eba4a877-276a-4050-9a97-d32614546c71": { "kind": "QUESTION", "title": "가상 머신 두 대에 동시에 부하를 주면 이 호스트에서 vCPU 경쟁이 실제로 생기는가", "version": null }, "a0e1cc05-92b3-4dac-bce1-513ab8cd862b": { "kind": "CASE", "title": "Forward-Auth에서 Client가 보낸 Identity Header를 신뢰하면 안 되는 이유", "version": null }, "488ce49b-afa4-42a5-a2ce-de2e0653cd82": { "kind": "CASE", "title": "Refresh Token 관리만 서버로 이전, Access Token은 여전히 Browser에 노출", "version": null }, "bf675775-4f3e-4744-8014-f0efff51422a": { "kind": "CASE", "title": "SPA에서 OAuth Token을 JavaScript Memory에 보관한 경우", "version": null }, "036563a1-3a43-4931-a017-0e693b591e89": { "kind": "REFERENCE", "title": "패턴 검증을 실제로 돌릴 때의 안전한 순서", "version": null }, "4c9c3b90-bc89-4300-9334-088ea95d37d8": { "kind": "CASE", "title": "Projection 이후에도 1,509행을 읽은 Row Over-fetch", "version": null }, "7ed75172-fd56-42bf-956a-8f9fc1cca235": { "kind": "CASE", "title": "Collection Fetch Join으로 N+1을 해결하다 만난 MultiBag예외와 행 폭증 문제", "version": null }, "a3493786-d3fb-4b01-b1c5-ecb23c3d5497": { "kind": "CONCEPT", "title": "Forward-Auth와 Nginx auth_request의 동작", "version": null }, "5c8f12d5-1ead-469b-8e91-2de69401df48": { "kind": "CONCEPT", "title": "Cookie로 인증하는 요청에서 CSRF token이 하는 일", "version": null }, "d85bd6af-7599-4ef7-9407-6609927d5b5c": { "kind": "CASE", "title": "Browser Token을 없애면서 BFF에 Session과 CSRF 책임이 생긴 과정", "version": null }, "e1e0e2a0-c6b6-45bf-be42-f697ba5e2fff": { "kind": "QUESTION", "title": "ANALYZE 이후 Cardinality Estimate는 어떻게 달라지는가", "version": null }, "5159c415-232d-424a-970a-b0db52746767": { "kind": "QUESTION", "title": "Round Trip과 Row Volume을 독립 측정할 것인가", "version": null }, "b0b55ac9-c0a3-4c01-ba84-0aa478923ace": { "kind": "REFERENCE", "title": "JPA N+1 정량 진단 기준", "version": null }, "ae6c9bea-d3a3-46e1-bbd4-8d580d336394": { "kind": "PROJECT_DECISION", "title": "Query Plan은 실제 PostgreSQL에서 측정한다", "version": null }, "d99fdec9-fe9e-4e0f-a50b-6fb9b9ed5719": { "kind": "CONCEPT", "title": "외부 IdP Brokering의 동작", "version": null }, "bf5f2462-0e94-4723-bdc8-f7dd709b2dbb": { "kind": "REFERENCE", "title": "Top-N-per-group 선택 기준", "version": null }, "e8c2e9ea-cd87-46f8-9469-849dbd433d86": { "kind": "REFERENCE", "title": "PostgreSQL Query Plan 측정 기준", "version": null }, "06788903-3dfa-4f70-b159-f1224384fd0b": { "kind": "REFERENCE", "title": "Keyset Pagination 설계 기준", "version": null }, "51095f6e-2cc8-439c-8648-065033614215": { "kind": "REFERENCE", "title": "Fetch Type과 Fetch Strategy 구분", "version": null }, "db99cbc5-9123-4599-b368-39ff3170e81d": { "kind": "REFERENCE", "title": "Fetch Join · Batch · Projection 선택 기준", "version": null }, "635fcedd-d402-4297-bcf3-9fcdf4200d28": { "kind": "REFERENCE", "title": "Feed Visibility Query Pattern", "version": null }, "30a37f34-b406-4061-b924-e22e0be0c3bf": { "kind": "PROJECT_DECISION", "title": "화면 조회는 Read Projection을 사용한다", "version": null }, "4e3200c8-eff5-4442-ae84-ae7b7fa92c8b": { "kind": "PROJECT_DECISION", "title": "Query Strategy는 FeedQueryPort 뒤에서 소유한다", "version": null }, "5e4d033c-d6fe-4257-a4dc-1ade44473c72": { "kind": "PROJECT_DECISION", "title": "Collection Fetch Join과 Pagination을 같이 사용하지 않는다", "version": null }, "1dbce381-f0dc-4d49-ad68-bd31d205677e": { "kind": "PROJECT_DECISION", "title": "Feed Pagination은 Keyset을 사용한다", "version": null }, "7f248f68-ce2b-43ec-94ce-82324d0bd1a7": { "kind": "PROJECT_DECISION", "title": "현재 Read Model은 CQRS-lite로 유지한다", "version": null }, "08a74b35-10c3-4874-8fbc-209b0b6e942e": { "kind": "PROJECT_DECISION", "title": "Entity Graph 조회에는 Batch Fetch를 사용한다", "version": null }, "5088ce14-b096-41d3-abba-64b7afb48bb9": { "kind": "QUESTION", "title": "feed_visible을 Production CQRS로 승격할 것인가", "version": null }, "b099ca65-bf9f-4d61-814c-74722453fa3c": { "kind": "QUESTION", "title": "Highlight 없는 FeedItem을 허용할 것인가", "version": null }, "6cbe963f-86f8-4df6-be5a-900712970d01": { "kind": "QUESTION", "title": "실제 동시 트래픽에서도 이 구조가 안정적인가", "version": null }, "e6715e81-6dbd-4287-8e19-946c334f38fb": { "kind": "CASE", "title": "Visibility OR이 Keyset Index를 깨뜨린 문제", "version": null }, "3f886154-1b85-407b-bda4-57d28370e745": { "kind": "REFERENCE", "title": "OAuth/OIDC 인증 패턴 선택 기준", "version": null }, "19b55c39-c583-4161-9775-df954280a568": { "kind": "PROJECT_DECISION", "title": "BFF가 OAuth Token을 관리하는 조건", "version": null }, "7ff40767-a00b-4db2-98f6-0cdfce8c8936": { "kind": "QUESTION", "title": "Forward-Auth 구조에서 Application Authorization을 어디까지 Edge에 둘 것인가", "version": null }, "18a5cde2-dd1e-4bff-9f1c-997577ae438f": { "kind": "QUESTION", "title": "BFF의 Session과 OAuth2AuthorizedClient를 어디에 저장할 것인가", "version": null }, "66c18e42-116c-459f-86bd-b7e4bf394866": { "kind": "REFERENCE", "title": "OAuth Token과 Application Session을 구분하는 기준", "version": null }, "97eddd97-1096-426a-a2c6-a6c5bf1cd09f": { "kind": "REFERENCE", "title": "BFF 인증 구조 설계 기준", "version": null }, "004dd0a2-5fb3-4f25-80c9-576f709de331": { "kind": "REFERENCE", "title": "Forward-Auth에서 Identity Header를 신뢰하기 위한 조건", "version": null }, "1a00a640-8987-4075-a9e4-7ec023cdffbb": { "kind": "REFERENCE", "title": "외부 IdP 연동과 Application 인증 구조의 경계", "version": null }, "ede6b9ce-eeed-40c8-9175-9e8116029395": { "kind": "REFERENCE", "title": "Public Client와 Confidential Client 구분 기준", "version": null }, "c72656b5-842d-45d9-b5f6-82b66b09d0b9": { "kind": "QUESTION", "title": "서버 세션 기반 인증 구조는 다중 인스턴스에서 어떻게 운영할 것인가", "version": null }, "bb5c37ae-2d94-48f7-ad4e-a37c61c3fd07": { "kind": "CONCEPT", "title": "브라우저가 credential을 보관하는 위치와 그 성질", "version": null }, "87000d59-b69f-4010-9481-0b71c8bde32d": { "kind": "CONCEPT", "title": "Bearer JWT가 인증된 principal이 되기까지", "version": null }, "75c6c657-3e03-47a0-a9d0-5637fce9dd3f": { "kind": "CONCEPT", "title": "Authorization Code와 PKCE가 보호하는 구간", "version": null }, "8c1ebea7-204e-445c-9812-0421d9eb0e9c": { "kind": "PROJECT_DECISION", "title": "외부 IdP와의 연동이라도 별도의 인증 방식이 아니다.", "version": null }, "9ae4ec71-a32e-49a7-88c2-f7368541c28d": { "kind": "QUESTION", "title": "Refresh Token Rotation과 다중 Replica 경쟁을 어떻게 처리할 것인가", "version": null }, "39fdf472-82c4-43ed-abec-73de672f08ae": { "kind": "REFERENCE", "title": "Authorization Code Flow의 Endpoint와 Credential 이동 기준", "version": null } } }