1
0
forked from baron/baron-sso
Files
baron-sso/docs/hydra-rp-dummy.md
2026-01-30 17:56:42 +09:00

2.1 KiB

hydra-rp-dummy 사용 기록

목적

devfront/hydra-rp-dummy.py를 이용해 Hydra에 더미 RP consent를 생성하고, UserFront 활동상황 카드에 반영되는지 확인합니다.

사전 조건

  • Hydra/크라토스 스택이 실행 중이어야 합니다.
  • ory_hydra 컨테이너가 존재해야 합니다.
  • Docker 이미지 python:3.12-alpine가 필요합니다.

입력 값

  • CLIENT_ID: 더미 RP의 client_id
  • SUBJECT: Kratos identity id (예: 22607c1b-bfbf-4a90-9505-36b348472e7a)
  • REDIRECT_URI: client에 등록된 redirect_uri
  • SCOPE: openid profile email
  • STATE, NONCE: 충분히 긴 랜덤 값

실행 방법

다음 명령으로 hydra-rp-dummy.py를 컨테이너에 마운트해 실행합니다.

docker run --rm --network container:ory_hydra \
  -v /home/lectom/repos/baron-sso/devfront/hydra-rp-dummy.py:/tmp/hydra-rp-dummy.py:ro \
  -e CLIENT_ID=52a597f0-5b06-4fcb-b804-93e88a56a75a \
  -e SUBJECT=22607c1b-bfbf-4a90-9505-36b348472e7a \
  -e REDIRECT_URI=https://example.com/callback \
  -e SCOPE='openid profile email' \
  -e STATE=state-$(date +%s%N) \
  -e NONCE=nonce-$(date +%s%N) \
  python:3.12-alpine python /tmp/hydra-rp-dummy.py

동작 방식 요약

  • hydra-rp-dummy.py가 127.0.0.1:3000에 임시 consent app을 띄웁니다.
  • /oauth2/auth 호출로 login_challenge를 받고 자동 수락합니다.
  • 이어서 consent_challenge를 받아 자동 수락합니다.
  • 마지막 redirect 단계에서 CSRF 에러가 발생할 수 있으나, consent 세션 자체는 생성됩니다.

생성 확인 방법

Hydra Admin API에서 consent 세션을 확인합니다.

docker run --rm --network container:ory_hydra curlimages/curl:8.11.1 \
  sh -lc 'curl -s "http://127.0.0.1:4445/oauth2/auth/sessions/consent?subject=22607c1b-bfbf-4a90-9505-36b348472e7a&client=52a597f0-5b06-4fcb-b804-93e88a56a75a"'

예시 응답에 grant_scope, handled_at, client_id 등이 포함되면 성공입니다.

참고

  • URLS_LOGIN, URLS_CONSENT는 현재 http://127.0.0.1:3000으로 설정되어 있습니다.
  • 따라서 임시 consent app 없이는 consent 생성이 진행되지 않습니다.