2026-05-06 15:55:22 +09:00
2026-05-06 14:35:49 +09:00
2026-05-06 14:35:49 +09:00
2026-05-06 14:35:49 +09:00
2026-05-06 14:35:49 +09:00
2026-05-06 14:35:49 +09:00
2026-05-06 15:55:22 +09:00
2026-05-06 14:35:49 +09:00
2026-05-06 14:35:49 +09:00
2026-05-06 14:35:49 +09:00

Baron SSO Server-Side App Demo (Express.js)

이 프로젝트는 baron-ssoserver-side-app RP를 테스트하기 위한 단순한 Express.js 데모입니다.

목적

이 데모는 다음을 확인하기 위한 용도입니다.

  1. confidential client 기반 OIDC Authorization Code 로그인
  2. RP 로컬 세션 생성 및 유지
  3. Back-Channel Logout URI 호출 수신
  4. logout_token 검증 후 로컬 세션 즉시 파기

사전 준비

  1. baron-sso 프로젝트가 실행 중이어야 합니다.
  2. baron_net 네트워크가 생성되어 있어야 합니다.
  3. devfront에서 server-side-app 타입 RP를 생성해야 합니다.

권장 RP 설정

예시:

Type: server-side-app
Client ID: <생성된 client id>
Client Secret: <생성된 secret>
Redirect URI: http://localhost:4444/callback
Back-Channel Logout URI: http://172.16.x.x:4444/backchannel-logout
SID Claim Required: off

주의:

  • Back-Channel Logout URI는 브라우저 기준이 아니라 Baron backend가 실제로 접근 가능한 주소여야 합니다.
  • Docker 환경에서 localhost는 backend 컨테이너 자신을 가리킬 수 있으므로, 필요하면 사설 IP 또는 Docker 서비스명을 사용해야 합니다.

실행

docker-compose up --build

환경 변수

  • PORT: 기본값 4444
  • SESSION_SECRET: Express session secret
  • OIDC_ISSUER_URL: Baron OIDC issuer URL
  • OIDC_CLIENT_ID: server-side-app client id
  • OIDC_CLIENT_SECRET: server-side-app client secret
  • OIDC_REDIRECT_URI: callback URL
  • OIDC_CLIENT_AUTH_METHOD: 기본값 client_secret_basic, 필요 시 client_secret_post
  • BARON_API_BASE_URL: Baron backend/public gateway URL
  • BARON_BACKCHANNEL_JWKS_URL: Baron Back-Channel Logout JWKS URL
  • BARON_SESSION_VALIDATION_ENABLED: false로 두면 Baron 세션 재검증을 끄고 백채널 로그아웃만 단독 검증 가능

라우트

GET  /
GET  /login
GET  /callback
GET  /profile
GET  /logout
POST /backchannel-logout

동작 방식

  1. /login에서 state/nonce를 만들고 Baron authorize endpoint로 이동
  2. /callback에서 authorization code를 token으로 교환
  3. ID Token의 sid/sub를 현재 RP 세션 ID와 매핑
  4. Baron이 /backchannel-logout으로 logout_token 전송
  5. 데모 앱이 서명 및 claim을 검증
  6. sid 또는 sub로 대상 세션을 찾아 세션 스토어에서 직접 파기

테스트 포인트

정상 동작 시 아래 로그 흐름이 보여야 합니다.

[로그인 시작]
[콜백] Authorization Code -> Token 교환 성공
[세션 매핑] 등록 완료
[백채널 로그아웃] 요청 수신
[백채널 로그아웃] 토큰 검증 성공
[백채널 로그아웃] 세션 파기 완료
[백채널 로그아웃] 처리 완료
[프로필] 비로그인 상태로 접근하여 루트로 이동
Description
No description provided
Readme 35 KiB
Languages
JavaScript 82.8%
EJS 16.6%
Dockerfile 0.6%