피드로 돌아가기
Dev.toSecurity
원문 읽기
Hard-coded Issuer 제거를 통한 Host-agnostic OIDC 서버 설계
Make Your Hono Authorization Server Work on Any Host
AI 요약
Context
ISSUER 상수를 하드코딩한 기존 OIDC 서버 구조로 인한 환경별 코드 수정 필요성 발생. 배포 환경(Local, Staging, Production)에 따라 Discovery URL 및 JWT iss claim이 불일치하는 설정 의존성 문제 직면.
Technical Solution
- Request 객체에서 Scheme과 Host를 추출하는 getOriginFromRequest 헬퍼 도입을 통한 Runtime Origin 결정 구조 설계
- setDiscoveryUrl에 Full URL 대신 Relative Path를 전달하여 요청 시점에 Origin을 결합하는 동적 해소 방식 채택
- getClientForAuthentication 로직 내에 {origin}/scalar 패턴의 Dynamic Redirect URI 검증 단계 추가
- JWT 생성 단계의 grantContext.origin을 활용하여 발급 주체(iss claim)를 요청 호스트와 일치시키는 로직 구현
- OpenAPI security scheme 정의 시 Runtime Origin을 전위(Prepend)하여 환경에 독립적인 API 명세 제공
- Host 및 X-Forwarded-Host 헤더 분석을 통해 Reverse Proxy 환경에서도 정확한 Base URL을 식별하는 메커니즘 적용
실천 포인트
- OIDC 서버 설계 시 ISSUER를 상수가 아닌 Request context에서 유도하고 있는가 - Reverse Proxy 환경을 고려하여 X-Forwarded-Host 헤더 처리 로직이 포함되었는가 - Discovery URL 및 Redirect URI 검증 시 Relative Path와 Dynamic Origin 결합 방식을 사용하는가 - OpenAPI 명세 내 보안 스킴 URL이 환경에 관계없이 동적으로 생성되는가