# 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. 기본값은 `/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 보호 페이지 접근 시 이미 로그아웃 상태인지