forked from baron/baron-sso
2.6 KiB
2.6 KiB
UserFront Error Handling Policy
1. 목적
- UserFront의
/error화면에서 에러 코드 노출 정책을 일관되게 유지합니다. - Ory에서 전달되는 표준 에러 코드는 별도 bypass 규칙으로 처리합니다.
- 내부 코드와 번역 리소스의 누락을 자동 검증합니다.
2. 처리 원칙
- 프로덕션에서 에러 분기 기준은
error문자열이 아니라code입니다. ORY error code는 bypass 규칙으로 처리합니다.- ORY 코드 외 항목은 내부 whitelist를 기준으로 노출합니다.
- whitelist/bypass에 없는 코드는
unknown_error로 처리합니다.
3. 코드 분류
기준 파일: userfront/lib/core/constants/error_whitelist.dart
3.1 Internal whitelist
settings_disabledinvalid_sessionverification_requiredrecovery_expiredrecovery_invalidrate_limitednot_foundbad_requestpassword_or_email_mismatch
3.2 ORY bypass
access_deniedconsent_requiredinteraction_requiredinvalid_clientinvalid_grantinvalid_requestinvalid_scopelogin_requiredrequest_forbiddenserver_errortemporarily_unavailableunauthorized_clientunsupported_response_type
4. i18n 키 구조
- 내부 whitelist:
msg.userfront.error.whitelist.{code} - ORY bypass:
msg.userfront.error.ory.{code}
리소스는 아래 파일 모두에 키가 있어야 합니다.
locales/template.tomllocales/ko.tomllocales/en.tomluserfront/assets/translations/template.tomluserfront/assets/translations/ko.tomluserfront/assets/translations/en.toml
5. 검증
키 누락 검증 스크립트:
./scripts/verify_userfront_error_i18n.sh
화면 동작 테스트:
cd userfront
flutter test test/error_screen_test.dart
6. Backend code 주입/매핑 경로
- 기본 매핑 함수:
backend/internal/response/error_response.go404 -> not_found429 -> rate_limited
- legacy 응답 보강 미들웨어:
backend/internal/middleware/error_code_enricher.go- 핸들러가
{"error": ...}만 반환해도 status 기반code를 주입
- 핸들러가
- 신규 권장 패턴:
response.Error(...)또는 공통 helper(errorJSON,errorJSONCode)로 핸들러에서 명시 코드 반환
UserFront는 위 경로로 전달된 code를 기준으로 whitelist/ory/unknown 분기를 수행합니다.
7. 관련 이슈
#164[UserFront] 에러 노출 whitelist 정의 및 적용#259백엔드 i18n/에러 메시지 fallback 정책 재정리 및 반영 계획 수립#260[Backend] 에러 응답 code 통일 구현 계획 (phase rollout)