첫 커밋: 로컬 프로젝트 업로드
This commit is contained in:
51
baron-sso/docs/hydra-rp-dummy.md
Normal file
51
baron-sso/docs/hydra-rp-dummy.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# 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`를 컨테이너에 마운트해 실행합니다.
|
||||
|
||||
```bash
|
||||
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 세션을 확인합니다.
|
||||
|
||||
```bash
|
||||
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 생성이 진행되지 않습니다.
|
||||
Reference in New Issue
Block a user