forked from baron/baron-sso
접근 이력 스크롤 조회 기능 추가
This commit is contained in:
@@ -11,8 +11,8 @@
|
||||
| 방식 | Backend 엔드포인트 | 세션 토큰 반환 | 비고 |
|
||||
|---|---|---|---|
|
||||
| ID/Password | `POST /api/v1/auth/password/login` | `sessionJwt` | IDP 추상화 사용 (Ory/Descope) |
|
||||
| Enchanted Link (Email/SMS) | `POST /api/v1/auth/enchanted-link/init` → `POST /api/v1/auth/enchanted-link/poll` | `sessionJwt` | 링크 클릭 시 `POST /api/v1/auth/magic-link/verify` 호출 |
|
||||
| Magic Link Verify | `POST /api/v1/auth/magic-link/verify` | `token` | Polling 세션 갱신용 |
|
||||
| Enchanted Link (Email/SMS) | `POST /api/v1/auth/enchanted-link/init` → `POST /api/v1/auth/enchanted-link/poll` | `sessionJwt` | Ory는 `/api/v1/auth/login/code/verify`/`verify-short`(verifyOnly) 사용 |
|
||||
| Magic Link Verify | `POST /api/v1/auth/magic-link/verify` | `token` | 비-Ory 경로(verifyOnly 가능) |
|
||||
| SMS 코드 | `POST /api/v1/auth/sms` → `POST /api/v1/auth/verify-sms` | `token` | 현재는 내부 토큰(placeholder). Kratos 세션 교환 필요 |
|
||||
| QR 로그인 | `POST /api/v1/auth/qr/init` → `POST /api/v1/auth/qr/poll` | `sessionJwt` | 모바일 승인: `POST /api/v1/auth/qr/approve` |
|
||||
|
||||
@@ -27,8 +27,10 @@
|
||||
### 2.2 Enchanted Link (Email/SMS)
|
||||
1. `POST /api/v1/auth/enchanted-link/init` → `pendingRef` 수신
|
||||
2. `POST /api/v1/auth/enchanted-link/poll`로 폴링
|
||||
3. 사용자가 링크 클릭하면 UserFront가 `POST /api/v1/auth/magic-link/verify` 호출
|
||||
4. Polling 응답에서 `sessionJwt` 수신
|
||||
3. 사용자가 링크 클릭하면 UserFront가 아래 중 하나 호출
|
||||
- Ory: `POST /api/v1/auth/login/code/verify` 또는 `/api/v1/auth/login/code/verify-short` (verifyOnly=1)
|
||||
- 비-Ory: `POST /api/v1/auth/magic-link/verify` (verifyOnly=1)
|
||||
4. Polling 응답에서 `sessionJwt` 수신 (승인 후 Backend에서 세션 발급)
|
||||
|
||||
### 2.3 QR 로그인
|
||||
1. `POST /api/v1/auth/qr/init` → `qrCode`, `pendingRef` 수신
|
||||
@@ -75,14 +77,41 @@
|
||||
|
||||
---
|
||||
|
||||
## 5) UserFront 주의사항
|
||||
## 5) 링크 로그인 ↔ QR 로그인 공유/분리 로직
|
||||
|
||||
### 5.1 공유되는 로직 (공통 기반)
|
||||
- **IDP 코드 검증 로직 공유**: Ory 기준으로 링크 로그인과 QR 로그인 모두 `VerifyLoginCode`(코드 기반 로그인 검증)를 사용합니다.
|
||||
- **Kratos courier relay 공유**: Kratos에서 발송되는 `login_code`를 `HandleKratosCourierRelay`에서 처리하며, 링크/QR 모두 이 경로를 거칩니다.
|
||||
- **코드/플로우 상태 저장**: 코드 로그인 플로우의 `flow_id`는 공통 키(`prefixLoginCode`)에 저장됩니다.
|
||||
|
||||
### 5.2 분리되는 로직 (pendingRef/승인 경로)
|
||||
- **pendingRef 네임스페이스 분리**:
|
||||
- 링크 로그인: `prefixSession`, `prefixLoginCodePending`, `prefixLoginMethod`, `prefixLoginFlow`
|
||||
- QR 로그인: `prefixLoginCodeQrPending`, `prefixLoginCodeQr`, `prefixQrPending`, `prefixQrMeta`, `prefixQrApproverSession`
|
||||
- **승인 엔드포인트 분리**:
|
||||
- 링크 로그인: `/api/v1/auth/magic-link/verify` 또는 `/api/v1/auth/login/code/verify*` (verify-only)
|
||||
- QR 로그인: `/api/v1/auth/qr/approve`
|
||||
- **세션 발급 주체 분리**:
|
||||
- 링크 로그인: Polling(요청 기기 A)에서 세션 발급
|
||||
- QR 로그인: Polling(웹)에서 세션 발급, 모바일은 승인만 수행
|
||||
- **audit 기록 경로 분리**:
|
||||
- 링크 로그인: `writeLinkAuditLog`
|
||||
- QR 로그인: `writeQrAuditLog`
|
||||
|
||||
### 5.3 verify-only 적용 범위
|
||||
- 링크 로그인/코드 로그인 경로에만 적용됩니다.
|
||||
- QR 로그인은 approve/poll 구조이므로 verify-only를 사용하지 않습니다.
|
||||
|
||||
---
|
||||
|
||||
## 6) UserFront 주의사항
|
||||
|
||||
- `sessionJwt`가 **JWT 형식이 아닐 수 있음** (Kratos session token은 opaque 가능)
|
||||
- 현재 UserFront는 Descope SDK 기반 세션 처리 로직이 포함되어 있어, Ory 사용 시 이 부분은 분리/대체가 필요함
|
||||
|
||||
---
|
||||
|
||||
## 6) 다음 액션 제안
|
||||
## 7) 다음 액션 제안
|
||||
|
||||
1. **Kratos 세션 쿠키 전달 방식(A) 구현**
|
||||
2. Enchanted/Magic Link의 Ory 대응(로그인 코드/링크 방식) 설계
|
||||
|
||||
Reference in New Issue
Block a user