forked from baron/baron-sso
2.2 KiB
2.2 KiB
Issue #434 트러블슈팅 기록: 대시보드 세션 시작 시간이 Unknown으로 표시됨
기준 시점
- 2026-03-24 KST
- 대상 화면: UserFront 대시보드 상단 세션 정보 칩
증상
- 로그인 후 대시보드의 세션 시작 시간이
Unknown또는알 수 없음으로 표시됨 - 특히 동일 브라우저의 cookie session 승격 경로에서 재현됨
원인
- 기존 대시보드는 저장된 로컬 토큰만 파싱해
iat또는auth_time을 읽었습니다. - cookie mode에서는
AuthTokenStore.setCookieMode()가 로컬 토큰을 제거하고 cookie 플래그만 유지합니다. - 그 결과 대시보드는 파싱할 JWT가 없어 항상 fallback 문구로 떨어졌습니다.
수정 방향
- Backend
/api/v1/user/me응답에 Kratossessions/whoami의authenticated_at값을sessionAuthenticatedAt으로 포함합니다. - UserFront 대시보드는 세션 시각 계산 시 다음 우선순위를 사용합니다.
- JWT의
iat또는auth_time - profile의
sessionAuthenticatedAt
- JWT의
- 두 값이 모두 없을 때만
ui.userfront.session.unknownfallback을 사용합니다.
반영 파일
backend/internal/domain/auth_models.gobackend/internal/handler/auth_handler.gobackend/docs/openapi.yamluserfront/lib/features/profile/data/models/user_profile_model.dartuserfront/lib/features/dashboard/domain/session_time_resolver.dartuserfront/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.dartuserfront/test/dashboard_screen_smoke_test.dart
검증 명령
GOCACHE=/tmp/go-build go test ./internal/handler -run 'TestGetMe_IncludesSessionAuthenticatedAt' -count=1flutter test test/dashboard_session_time_resolver_test.dartflutter test test/dashboard_screen_smoke_test.dart
남은 참고사항
- Hydra introspection fallback만 사용되는 토큰 경로에서는
sessionAuthenticatedAt이 비어 있을 수 있습니다. - 이 경우에도 JWT claim이 없으면 기존 fallback 문구를 유지합니다.