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)。 - トークンを生成(すでに存在する場合は トークンを再生成)を押します — ベアラートークンはダイアログに一度だけ表示され、クリップボードに コピーされます。パスワードマネージャーに保存してください。サーバーが 保持するのは、定数時間で検証できるコピーだけです。
- IdP のプロビジョニング設定で、次の内容で SCIM を有効にします:
- ベースURL: 上記のエンドポイント
- 認証:
Authorization: Bearer <token> - ユーザー ID:
userName(メール)またはexternalId— どちらも一致します
- 1 人のユーザーでテストします。IdP からそのユーザーをプッシュし、表示される
ことを確認します(SCIM の作成はプロバイダーの
externalIdをアカウントに 固定します。これは初回の SSO ログインが設定する固定と同じです)。
プロビジョニング解除が行うこと
「プロビジョニング解除が行うこと」というセクションIdP が active: false(または DELETE)を送ると、SCIM はまず、その
アカウントがワークスペースの オーナー である場合に拒否します(先に
所有権を譲渡してください)。それ以外の場合は次のとおりです:
- まずすべてのデバイス認証情報が取り消されます — ライブセッションは 数秒以内に切断されます、
- すべてのワークスペースメンバーシップが削除されます、
- アカウントは無効化済みとして記録されます(明示的に再有効化されるまで、 その後 IdP が何を言おうと、ログインできることは決してありません)。
ユーザー行自体は残ります — チケット、メッセージ、コミットの帰属は永続的です。
再有効化(SCIM の active: true)はログインを復元しますが、メンバーシップは
復元しません。メンバーシップには新しい招待か、ログイン時の
自動メンバーポリシーが必要です。
トラブルシューティング
「トラブルシューティング」というセクション- すべての呼び出しで 401 — トークンが変更されています。再生成して IdP を更新してください。
- エンドポイントに到達できない — トンネルが停止しているか、サーバーが リレー専用です。SCIM には直接の HTTPS が必要です。JIT は関係なく 機能し続けます。
- グループプッシュのエラー(501) — これは意図的です。グループ→ロールの マッピングは、プッシュされたグループではなく、ログイン時に SAML/OIDC の グループ属性から行われます。