forked from baron/baron-sso
custom claim 권한체크 확인
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
|
||||
## 현재 Baron SSO 구조 요약
|
||||
|
||||
Baron SSO는 Ory Stack을 SoT로 두고, PostgreSQL은 read-model 및 비즈니스 메타데이터 저장소로 사용합니다. `docs/SoT_Architecture_Policy.md`와 `docs/tenant-usergroup-policy.md` 기준으로 Identity는 Kratos, 권한/멤버십은 Keto, 테넌트/조직 메타데이터는 PostgreSQL이 담당합니다.
|
||||
Baron SSO는 Ory Stack을 SSOT로 둡니다. `docs/SoT_Architecture_Policy.md`와 `docs/tenant-usergroup-policy.md` 기준으로 Identity는 Kratos, 권한/멤버십은 Keto가 원장입니다. PostgreSQL은 Ory에 저장되지 않거나 조회가 불가능한 Worksmobile/조직 표시/검색 데이터의 read model과 처리 상태 저장소로만 사용합니다.
|
||||
|
||||
현재 사용자 생성 흐름은 다음과 같습니다.
|
||||
|
||||
@@ -178,7 +178,7 @@ Baron Kratos identity를 Worksmobile user로 보냅니다.
|
||||
|
||||
초기 비밀번호는 Worksmobile user upsert outbox payload에 `loginEmail`, `initialPassword` 형태로 함께 보관하고, adminfront의 한맥가족 Worksmobile 관리 화면에서 `email,initialPassword,status,lastError` CSV로 다운로드할 수 있게 합니다. 생성 성공/실패 판정은 outbox 작업 상태(`processed`, `failed`)와 함께 확인할 수 있으며, 운영상 평문 초기 비밀번호가 포함되므로 다운로드 권한은 `hanmac-family` tenant manage 권한으로 제한하고 보존 기간 정책을 별도 확정해야 합니다.
|
||||
|
||||
현재 backend `CreateUser`와 `UpdateUser`는 adminfront가 보내는 top-level `additionalAppointments` 및 `metadata.additionalAppointments`를 수용합니다. 한맥가족 단건 생성에서 대표 `tenantSlug` 없이 appointment만 오는 경우에는 first/primary appointment tenant를 대표 tenant로 해석해 Kratos traits, local read-model, Worksmobile enqueue가 누락되지 않게 합니다.
|
||||
현재 backend `CreateUser`와 `UpdateUser`는 adminfront가 보내는 top-level `additionalAppointments` 및 `metadata.additionalAppointments`를 수용합니다. 한맥가족 단건 생성에서 대표 `tenantSlug` 없이 appointment만 오는 경우에는 first/primary appointment tenant를 대표 tenant로 해석해 Ory/Keto 관계, 허용된 Backend read model, Worksmobile enqueue가 누락되지 않게 합니다.
|
||||
|
||||
### 구성원 수정과 비밀번호 정책
|
||||
|
||||
@@ -324,19 +324,19 @@ Worksmobile 운영 화면은 `orgfront`가 아니라 `adminfront`의 tenant deta
|
||||
|
||||
### 신규 사용자 단건 생성
|
||||
|
||||
- 후보 위치: `UserHandler.CreateUser`에서 Kratos 생성, local DB sync, login ID sync, Keto outbox enqueue 후
|
||||
- 후보 위치: `UserHandler.CreateUser`에서 Kratos 생성, 허용된 Backend read model sync, login ID sync, Keto outbox enqueue 후
|
||||
- payload에는 `identityID`, email, name, phone, tenantID, metadata/additionalAppointments를 포함합니다.
|
||||
- `hanmac-family` scope가 아니면 enqueue하지 않습니다.
|
||||
|
||||
### 신규 사용자 bulk 생성
|
||||
|
||||
- 후보 위치: `UserHandler.BulkCreateUsers`에서 row별 local DB sync와 Keto outbox enqueue 후
|
||||
- 후보 위치: `UserHandler.BulkCreateUsers`에서 row별 허용된 Backend read model sync와 Keto outbox enqueue 후
|
||||
- row별 partial success를 유지하고, Worksmobile enqueue 실패는 사용자 생성 실패와 분리하는 것이 좋습니다.
|
||||
- 단, enqueue 실패는 audit/error로 남기고 운영자가 재시도할 수 있어야 합니다.
|
||||
|
||||
### 사용자 수정/소속 변경
|
||||
|
||||
- 후보 위치: `UserHandler.UpdateUser`에서 Kratos update와 local DB sync 후
|
||||
- 후보 위치: `UserHandler.UpdateUser`에서 중앙 `IdentityWriteService` 기반 Kratos update와 허용된 Backend read model sync 후
|
||||
- `email`, `name`, `phone`, `companyCode`, `tenant_id`, `metadata.additionalAppointments` 변경 시 `USER UPSERT` enqueue
|
||||
- `suspended`는 Worksmobile suspend로 동기화합니다.
|
||||
- `temporary_leave`는 Worksmobile 계정을 유지합니다.
|
||||
|
||||
Reference in New Issue
Block a user