first commit
This commit is contained in:
69
README.md
Normal file
69
README.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Baron SSO Login Demo (Express.js)
|
||||
|
||||
이 프로젝트는 `baron-sso`의 OIDC 로그인을 테스트하기 위한 단순한 Expressjs 데모 페이지입니다.
|
||||
|
||||
## 사전 준비
|
||||
|
||||
1. `baron-sso` 프로젝트가 실행 중이어야 합니다.
|
||||
2. `baron_net` 네트워크가 생성되어 있어야 합니다.
|
||||
|
||||
## 1. OIDC 클라이언트 등록
|
||||
|
||||
`baron-sso` 프로젝트 폴더에서 다음 명령을 실행하여 데모용 클라이언트를 Hydra에 등록합니다.
|
||||
|
||||
```bash
|
||||
docker exec ory_hydra \
|
||||
hydra create oauth2-client \
|
||||
--endpoint http://127.0.0.1:4445 \
|
||||
--id demo-client \
|
||||
--secret demo-secret \
|
||||
--grant-type authorization_code,refresh_token \
|
||||
--response-type code \
|
||||
--scope openid,offline_access,profile,email \
|
||||
--redirect-uri http://localhost:3000/callback
|
||||
```
|
||||
|
||||
## 2. 데모 페이지 실행
|
||||
|
||||
이 폴더(`baron-sso-login-demo`)에서 다음 명령을 실행합니다.
|
||||
|
||||
```bash
|
||||
docker-compose up --build
|
||||
```
|
||||
|
||||
## 3. 테스트
|
||||
|
||||
1. 브라우저에서 `http://localhost:3000`에 접속합니다.
|
||||
2. "Login with Baron SSO" 버튼을 클릭합니다.
|
||||
3. `baron-sso` 로그인 화면으로 리다이렉트되면 로그인을 진행합니다.
|
||||
4. 로그인 성공 후 사용자 프로필 정보가 표시되는지 확인합니다.
|
||||
|
||||
## 환경 변수 설정 (.env)
|
||||
|
||||
필요에 따라 `.env` 파일을 생성하여 설정을 변경할 수 있습니다.
|
||||
|
||||
- `OIDC_ISSUER_URL`: Baron SSO의 OIDC Issuer URL (기본값: `http://localhost:5000/oidc`)
|
||||
- `OIDC_CLIENT_ID`: 등록한 클라이언트 ID
|
||||
- `OIDC_CLIENT_SECRET`: 등록한 클라이언트 시크릿
|
||||
- `OIDC_REDIRECT_URI`: 콜백 URL
|
||||
- `BARON_API_BASE_URL`: Baron Backend/Public Gateway 기준 URL. 기본적으로 `OIDC_ISSUER_URL`에서 `/oidc`를 제거한 값을 사용합니다.
|
||||
- `BARON_BACKCHANNEL_JWKS_URL`: Baron이 서명한 `logout_token` 검증용 JWKS URL. 기본값은 `<BARON_API_BASE_URL>/api/v1/auth/backchannel/jwks.json` 입니다.
|
||||
|
||||
## 세션 종료 / 연동 해지 동작
|
||||
|
||||
이 데모 앱은 두 경로로 로그아웃을 반영합니다.
|
||||
|
||||
1. 기본 경로: 각 요청마다 Baron의 `GET /api/v1/user/me`를 Bearer token으로 호출하여 현재 Baron 세션이 아직 유효한지 다시 확인합니다. Baron 세션이 무효하면 다음 요청에서 로컬 세션을 정리합니다.
|
||||
2. Back-Channel Logout 경로: `POST /backchannel-logout` 엔드포인트에서 Baron이 전송한 `logout_token`을 검증하고, `sid` 또는 `sub`에 매핑된 `express-session` 세션을 즉시 파기합니다.
|
||||
|
||||
### Back-Channel Logout 테스트 전제
|
||||
|
||||
- DevFront에서 대상 RP에 `Back-Channel Logout URI`를 `http://localhost:3000/backchannel-logout` 또는 외부 접근 가능한 주소로 설정해야 합니다.
|
||||
- Baron 서버가 해당 데모 앱 주소에 직접 접근 가능해야 합니다.
|
||||
- 로그인 후 ID Token의 `sid` 또는 `sub`를 기준으로 RP 세션이 메모리에 매핑됩니다.
|
||||
|
||||
따라서 다음 상황을 테스트할 수 있습니다.
|
||||
|
||||
- UserFront에서 `세션 종료` 후 Baron이 RP에 백채널 로그아웃을 전송하는지
|
||||
- UserFront에서 `연동 해지` 후 RP 세션이 즉시 파기되는지
|
||||
- RP 보호 페이지 접근 시 이미 로그아웃 상태인지
|
||||
Reference in New Issue
Block a user