피드로 돌아가기
Gmail OAuth client_id is not a secret â design notes for self-host Actors
Dev.toDev.to
Security

client_id 은닉 대신 Flow Integrity 중심의 OAuth 아키텍처 설계

Gmail OAuth client_id is not a secret â design notes for self-host Actors

foxck0160772026년 5월 16일4intermediate

Context

Self-host Actor 환경에서 Gmail OAuth client_id를 비밀값으로 오인하여 불필요한 은닉에 리소스를 낭비하는 설계 오류 발생. client_id는 식별자일 뿐이며, 실제 보안 취약점은 Token 관리와 인증 흐름의 무결성 결여에서 기인함.

Technical Solution

  • client_id의 공개성을 인정하고 보안 예산을 실제 공격 표면인 Flow Integrity 강화에 집중 배치
  • Redirect URI Allowlist 적용을 통한 등록된 콜백 엔드포인트 외의 인증 요청 차단
  • State 파라미터 및 anti-CSRF 메커니즘 도입으로 인증 라운드트립과 세션의 결합 보장
  • Least Privilege 원칙에 기반하여 gmail.readonly 등 최소한의 Scope만 요청하는 권한 최소화 설계
  • Tenant Isolation 구조를 통해 각 토큰을 네임스페이스로 분리하여 테넌트 간 데이터 침범 방지
  • Token Lifecycle 관리 체계를 구축하여 갱신, 만료, 철회 경로를 명시적으로 정의

1. client_id 은닉보다 Redirect URI 검증 로직의 엄격함 확인

2. 모든 OAuth 요청에 state 값을 활용한 CSRF 방어 적용 여부 검토

3. Token 저장소의 ACL 및 로그 출력 여부를 점검하여 유출 경로 차단

4. 서비스에 필요한 최소 권한(Scope)만 요청하고 있는지 재검토

5. 멀티테넌트 환경에서 토큰 식별자가 논리적으로 격리되어 있는지 검증

원문 읽기