1
0
forked from baron/baron-sso

백채널 로그아웃 문서 통일

This commit is contained in:
2026-06-19 11:04:54 +09:00
parent 77cd05fcbf
commit bec2a6b958
3 changed files with 0 additions and 708 deletions

View File

@@ -21,71 +21,6 @@ Baron SSO는 모든 RP에 대해 같은 방식으로 `POST /backchannel-logout`
- `server-side-app RP`
- `headless login RP``PKCE` 기반 custom login UI 변형
## Polling과 Session Management
`polling`에 가장 가까운 OIDC 개념은 **Back-Channel Logout**이 아니라 **OpenID Connect Session Management**입니다.
이 방식은 RP 서버가 OP 서버를 주기적으로 polling하는 구조가 아니라, **RP 브라우저 화면 안에서 OP의 `check_session_iframe`과 통신하면서 OP 세션 상태 변화 여부를 확인**하는 구조입니다.
개념적으로는 다음과 같습니다.
```text
RP 브라우저 화면
↓ 주기적으로 확인
OP check_session_iframe
changed / unchanged / error
changed면 RP가 재인증 또는 로그아웃 처리
```
즉, 이건 브라우저 기반 front-channel/iframe 방식이지, RP 서버가 OP 서버에 주기적으로 polling하는 Back-Channel Logout 방식은 아닙니다.
### Session Management를 쓸 때의 의미
Session Management를 도입하면 RP는 브라우저를 통해 OP 세션 상태 변화를 감지하고, 상태가 바뀌면 로컬 세션을 정리하거나 재인증을 유도합니다.
일반적인 흐름은 다음과 같습니다.
1. 로그인 시 RP가 OP 세션 식별에 필요한 정보를 보관합니다.
2. RP 화면이 `check_session_iframe` 상태를 주기적으로 확인합니다.
3. OP 세션이 바뀌면 `changed`를 받습니다.
4. RP가 로컬 세션을 삭제하거나 재인증을 시작합니다.
### Session Management 기반 로직 구성 예시
```mermaid
sequenceDiagram
autonumber
participant Browser as RP Browser
participant RP as RP App
participant IFrame as OP check_session_iframe
participant Store as RP Session Store
loop 주기적 확인
Browser->>IFrame: session state check
IFrame-->>Browser: changed / unchanged / error
alt unchanged
Browser->>RP: 로컬 세션 유지
else changed
Browser->>RP: 재인증 또는 로그아웃 유도
RP->>Store: session destroy
RP->>RP: 세션 매핑 제거
else error
Browser->>RP: 재시도 또는 안전 로그아웃
end
end
```
권장 구성은 다음과 같습니다.
1. 로그인 시 `sid` 또는 `sub`를 RP 세션에 저장합니다.
2. RP 화면이 `check_session_iframe` 상태를 주기적으로 확인합니다.
3. `changed`가 오면 RP가 로컬 세션을 삭제하거나 재인증을 시작합니다.
4. `error`가 반복되면 안전하게 로그아웃 처리하는 정책을 둘 수 있습니다.
이 방식은 `Back-Channel Logout`과 별개로 설계하는 것이 좋습니다.
## 공통 시퀀스
아래 흐름은 세 RP에 공통입니다.