피드로 돌아가기
GitHub App 설치 토큰: 요청별 재정의 헤더 도입
GeekNewsGeekNews
Security

GitHub App 설치 토큰: 요청별 재정의 헤더 도입

X-GitHub-Stateless-S2S-Token 헤더를 통한 JWT 기반 토큰 롤아웃 검증 체계 구축

flyingsquirrel2026년 5월 24일2intermediate

Context

기존 불투명(Opaque) 기반의 상태 저장 토큰 형식을 상태 비저장(Stateless) JWT 형식으로 전환하는 과정에서 발생 가능한 하위 호환성 문제 해결 필요. 토큰 길이 및 형식의 급격한 변화로 인한 클라이언트 애플리케이션의 런타임 오류를 방지하기 위한 점진적 배포 전략 수립.

Technical Solution

  • X-GitHub-Stateless-S2S-Token 임시 헤더를 도입하여 서버 측의 롤아웃 결정 로직을 클라이언트가 제어하는 재정의(Override) 메커니즘 설계
  • 'enabled' 설정을 통한 JWT 기반 ghs_ 접두사 토큰의 강제 반환으로 새로운 토큰 형식의 종단 간 수용 가능성 사전 검증
  • 'disabled' 설정을 통한 기존 불투명 토큰의 강제 반환으로 하위 호환성 유지 및 롤백 시나리오 테스트 환경 제공
  • JWT 전환에 따른 데이터 모델 변경(최소 520자 이상의 컬럼 확보) 및 정규식 기반의 유효성 검사 로직 업데이트 가이드라인 제시
  • 서버-투-서버(S2S) 통신 환경에 한정하여 새로운 토큰 형식을 적용함으로써 영향 범위를 최소화한 리스크 관리

- DB 토큰 저장 컬럼 크기를 520자 이상으로 확장하여 JWT 길이 대응 - ghs_[A-Za-z0-9\._]{36,} 정규식을 적용한 토큰 유효성 검사 코드 업데이트 - 하드코딩된 토큰 길이 기반의 검증 로직을 제거하고 가변 길이 처리로 전환 - 신규 토큰 포맷 도입 시 'enabled/disabled' 옵트인 헤더를 통한 A/B 테스트 수행

원문 읽기