SSO 연동 설정 값 변경
Deploy EG-BIM QA Gateway / deploy (push) Successful in 1m4s

This commit is contained in:
root
2026-09-22 14:38:59 +09:00
parent d197c0cf14
commit f196791191
5 changed files with 26 additions and 26 deletions
+1 -1
View File
@@ -38,7 +38,7 @@
- [ ] `requester_uuid`, `requester_affiliation`, `requester_position`, `requester_grade`의 공개 생성 API 지원 확인
- [x] SSO 세션 저장 및 `/auth/session` 확인
- [x] Worker에 `POST /api/feedbacks` 라우트 추가
- [x] Worker에서 `baron_qa_session` 검증
- [x] Worker에서 Q&A 세션 쿠키 검증
- [x] Worker에서 requester 정보 추출
- [x] `requester_id` 매핑: SSO `sub`
- [x] `requester_tenant_id` 매핑: SSO `tenant_id`
+8 -8
View File
@@ -11,12 +11,12 @@
```mermaid
flowchart TD
A[바론 홈페이지<br/>EG-BIM Q&A 링크] --> B[Q&A 목록 진입<br/>https://qa-test.baroncs.co.kr/egbim/]
B --> C{Q&A 세션 쿠키<br/>baron_qa_session 유효?}
B --> C{Q&A 세션 쿠키<br/>baron_qa_session_v2 유효?}
C -- 예 --> G[정적 목록 페이지 표시]
C -- 아니오 --> D[302 /auth/login<br/>return_url 보관]
D --> E[Worker가 PKCE 생성<br/>state · verifier · nonce]
E --> F[BRSW OIDC SSO<br/>app.brsw.kr/oidc]
E --> F[BARON-SSO OIDC<br/>sso.hmac.kr/oidc]
F --> F1{중앙 SSO 세션 존재?}
F1 -- 아니오 --> F2[SSO 로그인 화면]
F2 --> F3[최초 동의 화면<br/>필요 시 1회]
@@ -26,7 +26,7 @@ flowchart TD
I --> J[Worker가 state 검증<br/>PKCE code_verifier 검증]
J --> K[Token Endpoint 호출<br/>Public Client · client_secret 없음]
K --> L[UserInfo 조회 및 claim 정규화]
L --> M[baron_qa_session 발급<br/>HttpOnly · Secure · SameSite=Lax]
L --> M[baron_qa_session_v2 발급<br/>HttpOnly · Secure · SameSite=Lax]
M --> G
G --> N[문의 등록 버튼]
@@ -59,9 +59,9 @@ flowchart TD
| `S0` | 홈페이지 | Q&A 메뉴 클릭 | 외부 Q&A URL로 이동 | `S1` |
| `S1` | `/egbim/` | Q&A 세션 유효 | R2의 목록 HTML 제공 | `S5` |
| `S2` | `/auth/login` | 세션 없음 | PKCE 상태 생성, SSO로 redirect | `S3` |
| `S3` | `app.brsw.kr/oidc` | SSO 세션 없음 | 최초 로그인 및 동의 | `S4` |
| `S3` | `sso.hmac.kr/oidc` | SSO 세션 없음 | 최초 로그인 및 동의 | `S4` |
| `S4` | `/auth/callback` | `code`, `state` 수신 | state/PKCE 검증, token/userinfo 조회 | `S5` |
| `S5` | 목록 또는 작성 페이지 | `baron_qa_session` 유효 | `/auth/session`에서 사용자 확인 | `S6` |
| `S5` | 목록 또는 작성 페이지 | `baron_qa_session_v2` 유효 | `/auth/session`에서 사용자 확인 | `S6` |
| `S6` | `write.html` | `userUuid`, `tenantId` 확인 | 작성 폼 입력 대기 | `S7` |
| `S7` | 작성 페이지 | 등록 클릭 | `feedbackId` UUID 생성 및 입력 검증 | `S8` |
| `S8` | 작성 페이지 | 첨부 있음 | presign → `qa_cdn` 업로드 | `S9` |
@@ -83,14 +83,14 @@ https://qa-test.baroncs.co.kr/egbim/
### B. 중앙 SSO
- Q&A RP는 `https://app.brsw.kr/oidc`를 사용한다.
- Q&A RP는 `https://sso.hmac.kr/oidc`를 사용한다.
- 최초 사용자는 SSO 로그인 및 동의 화면을 볼 수 있다.
- 같은 중앙 SSO 세션이 있으면 다음 접근부터 로그인 화면 없이 authorization code가 발급된다.
- Q&A RP는 PKCE Public Client이므로 client secret을 보내지 않는다.
### C. Q&A 목록
- Worker가 `baron_qa_session` 검사한다.
- Worker가 `baron_qa_session_v2` 검사한다.
- 세션이 없으면 `/auth/login?return_url=...`로 이동한다.
- 세션이 있으면 R2의 `egbim/index.html`을 제공한다.
@@ -159,7 +159,7 @@ apiBaseUrl: ''
| SSO 로그인 전 | 로그인 화면 | 중앙 SSO 세션 없음 또는 다른 SSO 환경 |
| callback | `invalid_oauth_state` | OAuth cookie 만료, 호스트 변경, state 불일치 |
| token 교환 | `oauth_token_exchange_failed` | issuer/endpoint/client ID/PKCE 설정 불일치 |
| 세션 확인 | `authenticated:false` | `baron_qa_session` 없음·만료·`SESSION_SECRET` 불일치 |
| 세션 확인 | `authenticated:false` | `baron_qa_session_v2` 없음·만료·`SESSION_SECRET` 불일치 |
| 작성자 확인 | UUID/tenant 오류 | SSO scope 또는 claim mapping 누락 |
| 첨부 업로드 | 업로드 실패 | presign API 또는 `qa_cdn` 권한 오류 |
| DB 저장 | API 요청 오류 | `apiBaseUrl`, CORS, API 인증, DB envelope 규격 오류 |
@@ -11,12 +11,12 @@
```mermaid
flowchart TD
A[바론 홈페이지<br/>EG-BIM Q&A 링크] --> B[Q&A 목록 진입<br/>https://qa-test.baroncs.co.kr/egbim/]
B --> C{Q&A 세션 쿠키<br/>baron_qa_session 유효?}
B --> C{Q&A 세션 쿠키<br/>baron_qa_session_v2 유효?}
C -- 예 --> G[정적 목록 페이지 표시]
C -- 아니오 --> D[302 /auth/login<br/>return_url 보관]
D --> E[Worker가 PKCE 생성<br/>state · verifier · nonce]
E --> F[BRSW OIDC SSO<br/>app.brsw.kr/oidc]
E --> F[BARON-SSO OIDC<br/>sso.hmac.kr/oidc]
F --> F1{중앙 SSO 세션 존재?}
F1 -- 아니오 --> F2[SSO 로그인 화면]
F2 --> F3[최초 동의 화면<br/>필요 시 1회]
@@ -26,7 +26,7 @@ flowchart TD
I --> J[Worker가 state 검증<br/>PKCE code_verifier 검증]
J --> K[Token Endpoint 호출<br/>Public Client · client_secret 없음]
K --> L[UserInfo 조회 및 claim 정규화]
L --> M[baron_qa_session 발급<br/>HttpOnly · Secure · SameSite=Lax]
L --> M[baron_qa_session_v2 발급<br/>HttpOnly · Secure · SameSite=Lax]
M --> G
G --> N[문의 등록 버튼]
@@ -59,9 +59,9 @@ flowchart TD
| `S0` | 홈페이지 | Q&A 메뉴 클릭 | 외부 Q&A URL로 이동 | `S1` |
| `S1` | `/egbim/` | Q&A 세션 유효 | R2의 목록 HTML 제공 | `S5` |
| `S2` | `/auth/login` | 세션 없음 | PKCE 상태 생성, SSO로 redirect | `S3` |
| `S3` | `app.brsw.kr/oidc` | SSO 세션 없음 | 최초 로그인 및 동의 | `S4` |
| `S3` | `sso.hmac.kr/oidc` | SSO 세션 없음 | 최초 로그인 및 동의 | `S4` |
| `S4` | `/auth/callback` | `code`, `state` 수신 | state/PKCE 검증, token/userinfo 조회 | `S5` |
| `S5` | 목록 또는 작성 페이지 | `baron_qa_session` 유효 | `/auth/session`에서 사용자 확인 | `S6` |
| `S5` | 목록 또는 작성 페이지 | `baron_qa_session_v2` 유효 | `/auth/session`에서 사용자 확인 | `S6` |
| `S6` | `write.html` | `userUuid`, `tenantId` 확인 | 작성 폼 입력 대기 | `S7` |
| `S7` | 작성 페이지 | 등록 클릭 | `feedbackId` UUID 생성 및 입력 검증 | `S8` |
| `S8` | 작성 페이지 | 첨부 있음 | presign → `qa_cdn` 업로드 | `S9` |
@@ -83,14 +83,14 @@ https://qa-test.baroncs.co.kr/egbim/
### B. 중앙 SSO
- Q&A RP는 `https://app.brsw.kr/oidc`를 사용한다.
- Q&A RP는 `https://sso.hmac.kr/oidc`를 사용한다.
- 최초 사용자는 SSO 로그인 및 동의 화면을 볼 수 있다.
- 같은 중앙 SSO 세션이 있으면 다음 접근부터 로그인 화면 없이 authorization code가 발급된다.
- Q&A RP는 PKCE Public Client이므로 client secret을 보내지 않는다.
### C. Q&A 목록
- Worker가 `baron_qa_session` 검사한다.
- Worker가 `baron_qa_session_v2` 검사한다.
- 세션이 없으면 `/auth/login?return_url=...`로 이동한다.
- 세션이 있으면 R2의 `egbim/index.html`을 제공한다.
@@ -161,7 +161,7 @@ apiBaseUrl: ''
| SSO 로그인 전 | 로그인 화면 | 중앙 SSO 세션 없음 또는 다른 SSO 환경 |
| callback | `invalid_oauth_state` | OAuth cookie 만료, 호스트 변경, state 불일치 |
| token 교환 | `oauth_token_exchange_failed` | issuer/endpoint/client ID/PKCE 설정 불일치 |
| 세션 확인 | `authenticated:false` | `baron_qa_session` 없음·만료·`SESSION_SECRET` 불일치 |
| 세션 확인 | `authenticated:false` | `baron_qa_session_v2` 없음·만료·`SESSION_SECRET` 불일치 |
| 작성자 확인 | UUID/tenant 오류 | SSO scope 또는 claim mapping 누락 |
| 첨부 업로드 | 업로드 실패 | presign API 또는 `qa_cdn` 권한 오류 |
| DB 저장 | API 요청 오류 | `apiBaseUrl`, CORS, API 인증, DB envelope 규격 오류 |