1
0
forked from baron/baron-sso
Files
baron-sso/docs/trouble-shooting/issue-434-dashboard-session-start-time.md

2.2 KiB

Issue #434 트러블슈팅 기록: 대시보드 세션 시작 시간이 Unknown으로 표시됨

기준 시점

  • 2026-03-24 KST
  • 대상 화면: UserFront 대시보드 상단 세션 정보 칩

증상

  • 로그인 후 대시보드의 세션 시작 시간이 Unknown 또는 알 수 없음으로 표시됨
  • 특히 동일 브라우저의 cookie session 승격 경로에서 재현됨

원인

  1. 기존 대시보드는 저장된 로컬 토큰만 파싱해 iat 또는 auth_time을 읽었습니다.
  2. cookie mode에서는 AuthTokenStore.setCookieMode()가 로컬 토큰을 제거하고 cookie 플래그만 유지합니다.
  3. 그 결과 대시보드는 파싱할 JWT가 없어 항상 fallback 문구로 떨어졌습니다.

수정 방향

  1. Backend /api/v1/user/me 응답에 Kratos sessions/whoamiauthenticated_at 값을 sessionAuthenticatedAt으로 포함합니다.
  2. UserFront 대시보드는 세션 시각 계산 시 다음 우선순위를 사용합니다.
    • JWT의 iat 또는 auth_time
    • profile의 sessionAuthenticatedAt
  3. 두 값이 모두 없을 때만 ui.userfront.session.unknown fallback을 사용합니다.

반영 파일

  • backend/internal/domain/auth_models.go
  • backend/internal/handler/auth_handler.go
  • backend/docs/openapi.yaml
  • userfront/lib/features/profile/data/models/user_profile_model.dart
  • userfront/lib/features/dashboard/domain/session_time_resolver.dart
  • userfront/lib/features/dashboard/presentation/dashboard_screen.dart

회귀 테스트

  • Backend
    • backend/internal/handler/auth_handler_session_profile_test.go
  • UserFront
    • userfront/test/dashboard_session_time_resolver_test.dart
    • userfront/test/dashboard_screen_smoke_test.dart

검증 명령

  • GOCACHE=/tmp/go-build go test ./internal/handler -run 'TestGetMe_IncludesSessionAuthenticatedAt' -count=1
  • flutter test test/dashboard_session_time_resolver_test.dart
  • flutter test test/dashboard_screen_smoke_test.dart

남은 참고사항

  • Hydra introspection fallback만 사용되는 토큰 경로에서는 sessionAuthenticatedAt이 비어 있을 수 있습니다.
  • 이 경우에도 JWT claim이 없으면 기존 fallback 문구를 유지합니다.