forked from baron/baron-sso
1.9 KiB
1.9 KiB
#146 원격 링크 로그인 세션/이력 불일치 대응
요약
- Ory 링크 로그인은 실제로
/api/v1/auth/login/code/verify또는/api/v1/auth/login/code/verify-short경로를 사용합니다. - 기존에는
verifyOnly가/api/v1/auth/magic-link/verify에만 적용되어, 링크를 클릭한 기기에서 세션이 발급되는 문제가 있었습니다. - 인증수단 표기는 loginId 기반 추론에 의존해 SMS 요청이 Email로 표시되는 문제가 있었습니다.
원인
- verify-only 적용 범위가 magic link에 한정되어 있었고, Ory 코드 기반 경로는 세션을 즉시 발급했습니다.
- audit 로그의 인증수단 표기는 request_body/loginId 기반 추론만 사용했습니다.
변경 사항
1) verify-only 범위 확장
/api/v1/auth/login/code/verify,/api/v1/auth/login/code/verify-short에verifyOnly지원 추가- verify-only일 때는 승인 상태만 저장하고 세션 발급은 Polling(Desktop)에서 수행
2) Polling 시 세션 발급 주체 정리
- 승인 상태(
status=approved)는 **요청한 기기(A)**에서만 세션 발급 - Ory 코드 플로우는 Polling 시점에
VerifyLoginCode를 수행해 세션 생성
3) 인증수단 표기 개선
pendingRef기준으로login_method(sms/email),login_flow(code/link) 저장- audit 로그에 해당 메타를 기록하여 SMS/Email, 코드/링크 구분을 명확히 표시
- verify-only 요청 로그는 타임라인에서 제외
영향 범위
- Backend: 링크 로그인 승인/세션 발급 경로 변경
- Front: verify-only 플래그 전달 확장
- 문서: auth-flow/test-plan 업데이트
테스트 계획 (요약)
- Desktop에서 링크 요청 → Mobile에서 링크 클릭(verifyOnly) → Desktop Polling으로 세션 발급
- Mobile 단말에서 세션/로그인 이력 미생성 확인
- 인증수단 표기(SMS/Email) 정확성 확인
- 코드/링크 만료/재사용 시나리오 점검