피드로 돌아가기
Dev.toSecurity
원문 읽기
OIDC 기반 Third-party 인증과 First-party Token 발행을 통한 Passwordless 아키텍처 구현
Passwords are not necessary, a Oauth/OIDC approach
AI 요약
Context
직접적인 Password 관리로 인한 보안 리스크와 암호화 및 로테이션 관리의 운영 부담 발생. 외부 IdP(Identity Provider) 의존 시 발생하는 Token Lifecycle 제어 불가 및 도메인 특화 권한 정의의 한계점을 해결해야 하는 상황.
Technical Solution
- Google Identity Services를 통한 OIDC ID Token 획득으로 사용자 신원 증명 단계 간소화
- Backend에서 Google의 JWKS 엔드포인트를 활용하여 ID Token의 Signature, Issuer, Audience, Expiry 유효성을 검증하는 신뢰 체계 구축
- 외부 Token을 직접 사용하지 않고 검증 완료 후 내부 도메인 전용 Access Token과 Refresh Token을 신규 발행하는 Token Exchange 패턴 적용
- Access Token은 JSON 응답으로 전달하여 API 요청 시 Bearer Token으로 활용하고, Refresh Token은 HttpOnly 및 Secure Cookie에 저장하여 XSS 공격 벡터 차단
- 내부 Token 내에 Role 및 Institution IDs와 같은 시스템 전용 권한 정보를 포함하여 API 레벨의 세밀한 인가(Authorization) 제어 구현
실천 포인트
- 외부 IdP Token을 그대로 API 인증에 사용하지 말고 내부 Token으로 변환하여 Lifecycle 제어권을 확보할 것 - Refresh Token은 반드시 HttpOnly, Secure, SameSite 설정이 적용된 Cookie를 통해 전달하여 클라이언트 스크립트 접근을 제한할 것 - OIDC 검증 시 Audience(aud) 필드를 확인하여 타 서비스용으로 발행된 Token의 Replay Attack을 방지할 것 - JWKS 공개키 캐싱을 통해 매 요청마다 발생하는 IdP 서버 통신 비용을 최적화할 것