Skip to main content

管理者向け: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 SSOSCIM 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_URLhttps で正しく設定してください。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
email 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 を検索します。

  1. saml_name_id(SAML NameID)の完全一致
  2. メールアドレスの一致(一致時は 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_idscim_provisioned_at を記録
active: false(PATCH/PUT) disabled_at を設定。既存セッション・API トークンも即時遮断
active: true disabled_at を解除(再有効化)
DELETE Expert を論理削除(関連データのクリーンアップあり)

SCIM 経由のプロビジョニングではメール許可リストは適用されません(管理者保有トークンによる明示的な操作のため)。

Microsoft Entra ID での SCIM 設定例

  1. エンタープライズアプリケーションに iknow.dev を追加
  2. プロビジョニング → 自動 → SCIM
  3. テナント URL: {APP_URL}/scim/v2
  4. シークレットトークン: SSO_SCIM_TOKEN の値
  5. 属性マッピング: userName → メール、displayName → 表示名
  6. テスト接続 → プロビジョニング開始

監査ログ

SAML ログイン(成功・失敗)と SCIM 操作(作成・更新・削除)は 認証カテゴリの監査ログ に記録されます(No.8.5)。


トラブルシューティング(管理者向け)

症状 確認ポイント
SSO ボタンが表示されない SSO_SAML_ENABLED=true かつ IdP 3 項目がすべて設定済みか
署名検証エラー IdP 証明書の期限切れ・改行の欠落
未登録ユーザーがログインできない JIT が false かつ SCIM で未プロビジョニング
SCIM テスト接続失敗 トークン不一致・SSO_SCIM_ENABLEDfalse
無効化したのにアクセスできる セッションは次リクエストで遮断。disabled_at を確認