管理者向け:SAML SSO と SCIM プロビジョニングのセットアップ
管理者向け:SAML SSO と SCIM プロビジョニングのセットアップ
対象環境: オンプレミス導入 向けです。iknow.dev クラウド(SaaS)では SAML SSO / SCIM は提供していません。SaaS のログインは Qiita / GitHub / Google の OAuth のみです(No.2.3)。
組織の IT 管理者向けに、iknow の SAML 2.0 SSO と SCIM 2.0 ユーザープロビジョニング の設定手順をまとめます。一般ユーザー向けのログイン操作は No.7.4 を参照してください。
概要 — 2 つの連携
| 機能 | 役割 | エンドポイント |
|---|---|---|
| SAML SSO | ユーザーが IdP 経由でブラウザログイン | /saml/login(開始)・/saml/acs(応答受信)・/saml/metadata(SP メタデータ) |
| SCIM | IdP からユーザーの作成・更新・無効化・削除を自動同期 | /scim/v2/Users ほか(Bearer トークン認証) |
flowchart TB
subgraph IdP["組織の IdP(Entra ID 等)"]
SAML["SAML 認証"]
SCIM_P["SCIM プロビジョニング"]
end
subgraph iknow["iknow.dev"]
ACS["/saml/acs"]
Users["/scim/v2/Users"]
Expert["Expert アカウント"]
end
SAML -->|"ログイン時"| ACS --> Expert
SCIM_P -->|"事前同期"| Users --> Expert
推奨構成
| パターン | SAML JIT | SCIM | 用途 |
|---|---|---|---|
| 小規模・手動管理 | true |
無効 | 初回 SSO ログインで自動作成 |
| エンタープライズ(推奨) | false |
有効 | IdP でユーザー管理 → iknow に同期 → SSO ログイン |
SCIM でユーザーを管理するテナントでは JIT を無効 にし、未登録ユーザーの SSO を拒否する運用が安全です。
SAML SSO の設定
環境変数(サーバー側)
| 変数 | 説明 |
|---|---|
SSO_SAML_ENABLED |
true で SAML を有効化 |
SSO_SAML_IDP_ENTITY_ID |
IdP の Entity ID |
SSO_SAML_IDP_SSO_URL |
IdP の SSO URL |
SSO_SAML_IDP_X509_CERT |
IdP の署名証明書(PEM 本文) |
SSO_SAML_NAME_ID_FORMAT |
既定: emailAddress 形式 |
SSO_SAML_JIT |
true = 未登録ユーザーを初回 SSO で自動作成 |
本番では
APP_URLを https で正しく設定してください。SP の Entity ID / ACS URL はAPP_URL基準で自動生成されます。
IdP に登録する SP 情報
| 項目 | 値 |
|---|---|
| SP Entity ID / メタデータ URL | {APP_URL}/saml/metadata |
| ACS URL(Assertion Consumer Service) | {APP_URL}/saml/acs(HTTP-POST) |
| NameID 形式 | メールアドレス(emailAddress)推奨 |
SP メタデータ XML は GET /saml/metadata で取得できます。
IdP 側のクレーム設定
iknow.dev は SAML アサーションから メールアドレス と 表示名 を取得します。Entra ID では以下のクレーム URI に対応しています。
| 属性 | Entra ID クレーム URI |
|---|---|
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress |
|
| name | http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname |
Google Workspace 等では email / name の素朴な属性名にも対応します。
アカウント照合の仕組み
SSO ログイン時、iknow.dev は次の順で Expert を検索します。
saml_name_id(SAML NameID)の完全一致- メールアドレスの一致(一致時は
saml_name_idを自動バックフィル)
これにより、SCIM や OAuth で既に作成されたアカウント と SSO ログインが自動的にリンクされます。
SCIM プロビジョニングの設定
環境変数
| 変数 | 説明 |
|---|---|
SSO_SCIM_ENABLED |
true で SCIM を有効化 |
SSO_SCIM_TOKEN |
Bearer トークン(openssl rand -base64 48 等で生成) |
SCIM エンドポイント
ベース URL: {APP_URL}/scim/v2
| メソッド | パス | 操作 |
|---|---|---|
| GET | /ServiceProviderConfig |
機能サポート情報 |
| GET | /ResourceTypes |
リソース種別 |
| GET | /Schemas |
スキーマ定義 |
| GET | /Users |
ユーザー一覧(filter 対応) |
| POST | /Users |
ユーザー作成 |
| GET | /Users/{id} |
ユーザー取得 |
| PUT / PATCH | /Users/{id} |
ユーザー更新 |
| DELETE | /Users/{id} |
ユーザー削除(論理削除) |
認証: すべてのリクエストに Authorization: Bearer {SSO_SCIM_TOKEN} ヘッダーが必要です。
SCIM でのユーザー状態
| 操作 | iknow.dev 側の挙動 |
|---|---|
| ユーザー作成(POST) | Expert を新規作成。scim_external_id・scim_provisioned_at を記録 |
active: false(PATCH/PUT) |
disabled_at を設定。既存セッション・API トークンも即時遮断 |
active: true |
disabled_at を解除(再有効化) |
| DELETE | Expert を論理削除(関連データのクリーンアップあり) |
SCIM 経由のプロビジョニングではメール許可リストは適用されません(管理者保有トークンによる明示的な操作のため)。
Microsoft Entra ID での SCIM 設定例
- エンタープライズアプリケーションに iknow.dev を追加
- プロビジョニング → 自動 → SCIM
- テナント URL:
{APP_URL}/scim/v2 - シークレットトークン:
SSO_SCIM_TOKENの値 - 属性マッピング:
userName→ メール、displayName→ 表示名 - テスト接続 → プロビジョニング開始
監査ログ
SAML ログイン(成功・失敗)と SCIM 操作(作成・更新・削除)は 認証カテゴリの監査ログ に記録されます(No.8.5)。
トラブルシューティング(管理者向け)
| 症状 | 確認ポイント |
|---|---|
| SSO ボタンが表示されない | SSO_SAML_ENABLED=true かつ IdP 3 項目がすべて設定済みか |
| 署名検証エラー | IdP 証明書の期限切れ・改行の欠落 |
| 未登録ユーザーがログインできない | JIT が false かつ SCIM で未プロビジョニング |
| SCIM テスト接続失敗 | トークン不一致・SSO_SCIM_ENABLED が false |
| 無効化したのにアクセスできる | セッションは次リクエストで遮断。disabled_at を確認 |