Files
tdc114plus/docs/00_guide_tdc114plus_headless_pkce_contract_gap_2026-07-09.md

2.6 KiB

TDC114PLUS Headless/PKCE 계약 차이 검토

작성일: 2026-07-09 상태: 정책 재정렬 완료, headless 직접 호출은 기본 흐름에서 제외

2026-07-09 결론:

  • TDC114PLUS 앱의 기본 로그인은 Baron SSO Hosted Login + OIDC Authorization Code + PKCE다.
  • 앱은 /api/v1/auth/headless/... API를 직접 호출하지 않는다.
  • 이 문서는 headless 직접 호출을 검토하던 시점의 계약 차이를 보존하되, 현재 실행 기준으로는 참고/레거시 검토 문서로 본다.

1. 확인된 RP 설정

  • RP 유형: PKCE 공개 클라이언트
  • Client ID: 39d6190d-72f6-4a58-a84f-cdc5ece3e8af
  • Redirect URI: https://114.hmac.kr/auth/callback
  • Client Secret: 없음
  • OIDC issuer: https://sso.hmac.kr/oidc

2. 확인된 표준 OIDC 기능

Discovery 문서에서 아래 기능을 확인했다.

  • authorization code grant
  • token endpoint 인증 방식 none
  • PKCE S256
  • authorization, token, userinfo endpoint

따라서 공개 모바일 앱이 Client Secret 없이 PKCE verifier로 authorization code를 교환하는 표준 흐름은 지원된다.

3. Headless API 계약 차이

공식 Swagger의 아래 API는 client_assertion을 필수로 요구한다.

  • POST /api/v1/auth/headless/phone-login
  • POST /api/v1/auth/headless/link/poll

Swagger는 client_assertionprivate_key_jwt라고 정의한다. 이를 모바일 앱이 직접 생성하려면 RP 개인키가 APK에 포함되어야 하므로 공개 PKCE 앱 보안 모델과 맞지 않는다.

4. 적용 정책

  • Client ID는 공개 식별자이므로 APK에 포함한다.
  • Client Secret 또는 private_key_jwt 서명용 개인키는 APK에 포함하지 않는다.
  • 표준 PKCE 생성, state 검증, authorization code 교환은 앱에 구현한다.
  • 앱은 Baron SSO authorization endpoint를 열고, Baron SSO Hosted Login 화면이 휴대폰번호 입력과 문자/메일 링크 인증을 처리하게 한다.
  • headless API 직접 호출은 현재 앱 기본 구현에서 제외한다.
  • 추후 별도 신뢰 백엔드가 생기거나 Baron SSO가 모바일 공개 RP용 headless 계약을 제공하는 경우에만 별도 feature로 재검토한다.

5. Baron SSO 확인 요청

아래 질문은 앱이 headless API를 직접 호출해야 한다는 전제가 다시 살아날 때만 유효하다.

  1. PKCE 공개 RP에서 client_assertion 생략이 가능한지
  2. 불가능하다면 단기 assertion 발급 endpoint가 있는지
  3. assertion의 issuer, subject, audience, 만료시간, 서명 알고리즘
  4. login_challenge를 모바일 앱이 얻는 공식 절차
  5. headless 승인 완료 후 redirectTo와 PKCE callback 연결 절차