SCIM으로 사용자 프로비저닝
수명주기 제어가 필요할 때 이 가이드를 사용합니다. 오프보딩에서는 향후 로그인을 차단하는 데 그치지 않고 접근 권한까지 자동으로 회수해야 하기 때문입니다. SCIM은 IdP(Okta, Entra ID 등)가 바로 이 목적에 사용하는 푸시 프로토콜입니다.
사전 요구 사항
섹션 제목: “사전 요구 사항”- SSO가 이미 작동 중이어야 합니다(SSO 튜토리얼 또는 OIDC 가이드).
- IdP가 HTTPS로 접근할 수 있는 서버가 필요합니다. SCIM 호출은 사용자의 브라우저가 아니라 IdP에서 오기 때문입니다. 내장 터널 (설정 → 서버 → 연결 및 상태 → 이 서버 공유 → Cloudflared/ngrok/Tailscale)이나 공개 URL을 사용합니다. WebSocket 릴레이를 통해서만 접근할 수 있는 서버는 SCIM 푸시를 받을 수 없습니다. 그런 서버에서도 JIT 프로비저닝은 계속 작동하지만, 이 가이드는 해당되지 않습니다.
- 설정 → 서버 → 싱글 사인온 → 사용자 프로비저닝(SCIM) 카드를 엽니다.
카드에는 엔드포인트가 표시됩니다. 예:
https://<your-server>/scim/v2/Users. - 토큰 생성(이미 토큰이 있으면 토큰 재생성)을 누릅니다. bearer 토큰이 대화 상자에 한 번 표시되고 클립보드에 복사됩니다. 비밀번호 관리자에 보관합니다. 서버는 상수 시간으로 검증할 수 있는 사본만 유지합니다.
- IdP의 프로비저닝 설정에서 다음 값으로 SCIM을 활성화합니다.
- Base URL: 위 엔드포인트
- Authentication:
Authorization: Bearer <token> - User id:
userName(이메일) 또는externalId— 둘 다 일치합니다
- 사용자 한 명으로 테스트합니다. IdP에서 해당 사용자를 푸시하고 계정이
나타나는지 확인합니다(SCIM 생성은 프로바이더의
externalId를 계정에 고정하는데, 이는 최초 SSO 로그인이 설정하는 것과 동일한 고정입니다).
디프로비저닝이 수행하는 작업
섹션 제목: “디프로비저닝이 수행하는 작업”IdP가 active: false(또는 DELETE)를 보내면, SCIM은 해당 계정이 워크스페이스
소유자인 경우 먼저 거부합니다(소유권을 먼저 이전하세요). 그렇지 않으면
다음과 같이 처리합니다.
- 모든 기기 자격 증명을 먼저 폐기합니다. 활성 세션은 몇 초 안에 종료됩니다.
- 모든 워크스페이스 멤버십을 제거합니다.
- 계정을 비활성화로 표시합니다(이후 IdP가 무엇을 보내든 명시적으로 다시 활성화할 때까지 로그인할 수 없습니다).
사용자 행 자체는 남습니다. 티켓, 메시지, 커밋의 귀속 정보는 영구적입니다.
재활성화(SCIM active: true)는 로그인을 복원하지만 멤버십은 복원하지
않습니다. 멤버십에는 새 초대나 로그인 시 자동 멤버 정책이 필요합니다.
문제 해결
섹션 제목: “문제 해결”- 모든 호출에서 401 — 토큰이 변경되었습니다. 토큰을 재생성하고 IdP를 업데이트합니다.
- 엔드포인트에 접근할 수 없음 — 터널이 중단되었거나 서버가 릴레이 전용입니다. SCIM에는 직접 HTTPS가 필요하며, JIT는 그와 무관하게 계속 작동합니다.
- 그룹 푸시 오류(501) — 의도된 동작입니다. 그룹→역할 매핑은 푸시된 그룹이 아니라 로그인 시 SAML/OIDC 그룹 속성에서 수행됩니다.