1
0
forked from baron/baron-sso
Files
baron-sso/docs/trouble-shooting/issue-614-skip-consent.md

2.6 KiB

Issue #614 일반 RP Consent 반복 노출

현상

  • https://ssob.hmac.kr/의 나의 App 현황에서 일반 서비스 클라이언트 바로가기를 열 때 Hydra consent 화면이 매번 노출되었습니다.
  • DevFront, AdminFront는 동일 경로에서 consent 화면이 반복 노출되지 않았습니다.

원인

  • 일반 RP 생성/수정 API가 Hydra OAuth2 client의 skip_consent 값을 전달하지 않았습니다.
  • 백엔드 DTO와 DevFront 설정 모델에도 해당 필드가 없어 신규/기존 RP를 신뢰 앱으로 제어할 수 없었습니다.
  • remember: true consent 세션은 이미 적용되어 있었지만, Hydra client 자체의 skip_consent와는 별도 정책입니다.

조치

  • domain.HydraClientskip_consent JSON 필드를 추가했습니다.
  • Dev API는 skipConsent 요청 값을 받을 수 있지만, DevFront UI에는 별도 체크박스를 추가하지 않습니다.
  • 신규 RP 생성 시 skipConsent가 생략되면 기본값을 true로 Hydra에 전달합니다.
  • 기존 RP 수정 시 현재 값이 없으면 true로 보정하고, 명시적으로 false를 선택하면 그대로 Hydra에 전달합니다.

검증

  • TestCreateClient_DefaultsSkipConsentToTrue
    • 신규 RP 생성 요청에서 skipConsent가 생략되어도 Hydra payload의 skip_consenttrue인지 검증합니다.
  • TestCreateClient_AllowsExplicitSkipConsentFalse
    • 신규 RP 생성 요청에서 명시한 skipConsent: false가 Hydra payload에 보존되는지 검증합니다.
  • TestUpdateClient_AllowsExplicitSkipConsentFalse
    • 기존 RP 수정 요청에서 skipConsent: false가 Hydra update payload에 보존되는지 검증합니다.

실행 결과

  • GOCACHE=/tmp/baron-sso-go-cache go test ./internal/handler -run 'Test(CreateClient_(DefaultsSkipConsentToTrue|AllowsExplicitSkipConsentFalse)|UpdateClient_AllowsExplicitSkipConsentFalse)' -count=1
  • GOCACHE=/tmp/baron-sso-go-cache go test ./internal/handler -count=1
  • cd devfront && npx biome check src/features/clients/ClientGeneralPage.tsx src/lib/devApi.ts src/locales/en.toml src/locales/ko.toml src/locales/template.toml --formatter-enabled=false --organize-imports-enabled=false
  • cd devfront && npx tsc -b --pretty false
  • node tools/i18n-scanner/index.js
  • node tools/i18n-scanner/value-check.js

수동 테스트용 RP

  • tools/consent-demo-page/index.php를 추가했습니다.
  • DevFront에서 테스트용 RP를 따로 만들고, 데모 페이지의 .env에 해당 CLIENT_IDREDIRECT_URI를 설정하면 브라우저 기반 OIDC/consent 흐름을 확인할 수 있습니다.