SAML SSO シングルサインオン連携
本書では、MaiAgent プラットフォームが SAML 2.0 プロトコルを連携し、企業レベルのシングルサインオン(Single Sign-On, SSO)機能を実現する方法、ならびにユーザー認証の安全性と正確性を確保する仕組みについて説明します。
1. SAML SSO とは?
SAML(Security Assertion Markup Language)は XML をベースとしたオープンスタンダードであり、IDプロバイダー(Identity Provider, IdP)とサービスプロバイダー(Service Provider, SP)の間で認証情報や認可情報を交換するために利用されます。
1.1 SAML SSO の主なメリット
ユーザー体験
システムごとに個別ログインが必要で、パスワードの管理が煩雑
一度のログインで複数のシステムにアクセスでき、業務効率が向上
安全性
パスワードが複数システムに分散して保存され、漏洩リスクが増大
パスワードは企業の IdP のみに保存され、一元管理でより安全
アカウント管理
退職時に各システムのアカウントを個別に無効化する必要がある
IdP でアカウントを無効化すれば、すべてのシステムのアクセス権を一括で取り消せる
コンプライアンス
アクセス記録の統一的な監査・管理が難しい
一元化された ID 管理により、企業のセキュリティコンプライアンス要件を満たす
1.2 主な利用シーン
企業内システム連携: 従業員が自社の Active Directory または Okta を使って MaiAgent にログイン
教育機関: 学生や教職員が学校の IdP を使って AI 学習アシスタントにアクセス
マルチテナント SaaS: 各企業顧客がそれぞれの IdP を使って MaiAgent プラットフォームにログイン
パートナー協業: 外部パートナーが自社の企業アカウントを使って特定のリソースにアクセスすることを許可
2. MaiAgent SAML SSO アーキテクチャ
2.1 主要コンポーネントの説明
Service Provider (SP): MaiAgent プラットフォームがサービスプロバイダーとして機能し、SAML 応答を受信・検証します
Identity Provider (IdP): Azure AD、Okta、Google Workspace などの企業の認証システム
SAML Assertion: IdP が署名した XML 文書で、ユーザーの身元情報と属性情報を含みます
Metadata Exchange: SP と IdP が XML metadata を通じて構成情報を交換します
2.2 ユーザー属性のマッピング
MaiAgent は SAML Assertion から以下のユーザー属性を抽出します。
Email (必須): ユーザーの一意な識別子として使用され、一貫性を確保するために自動的に小文字へ変換されます
名称: ユーザーの表示名
組織情報: 部署、役職など(IdP の構成に依存)
グループ/ロール: 権限管理とアクセス制御に使用
3. Email 正規化処理
3.1 なぜ Email の正規化が必要なのか?
Email アドレスは技術的には大文字・小文字を区別しません(RFC 5321)が、システムによって異なる大文字・小文字の形式で出現する場合があります。
IdP からの返却:
John.Doe@Company.comユーザーの手動入力:
john.doe@company.comAPI 呼び出し:
JOHN.DOE@COMPANY.COM
正規化処理を行わない場合、以下のような問題が生じる可能性があります。
同一ユーザーに対して複数のアカウントが作成される
権限判定の誤り
データの不整合
3.2 MaiAgent の正規化方針
MaiAgent は SAML SSO 連携において、以下の Email 正規化措置を実装しています。
システムは Email の前後の空白を自動的に除去し、一律で小文字形式に変換することで、アカウント照合の一貫性を確保します。
正規化を行うタイミング:
SAML 応答の解析時: IdP からユーザーの Email を受信した直後に小文字へ変換
アカウント作成時: 新規ユーザーアカウントを作成する前に Email が小文字であることを確認
アカウント検索時: 既存ユーザーを検索する際にも小文字の Email を使用
データベース保存時: 保存されるすべての Email を小文字形式で保持
3.3 後方互換性への対応
正規化機構の実装前に作成されたアカウントについて、MaiAgent は以下の方針を採用しています。
自動移行: システムが既存アカウントの Email を自動的に小文字へ変換します
重複検出: 変換の過程で重複アカウントが存在しないかを検出します
競合解決: 競合が見つかった場合は、最も早く作成されたアカウントを保持し、データを統合します
4. アカウントの自動作成とアカウント競合の処理
4.1 アカウント自動作成フロー
ユーザーが初めて SAML SSO でログインすると、MaiAgent は自動的にアカウントを作成します。
自動作成時のデフォルト設定:
表示名: SAML Assertion 内の name 属性から抽出
デフォルト権限: 組織の設定に基づいて基本権限を割り当て
組織の所属: Email domain または IdP の構成に基づいて決定
4.2 アカウントが既に存在する場合の処理
MaiAgent はインテリジェントなアカウント競合の検出・処理機構を実装しています。
Email が登録済み: ユーザーが以前に同一の Email(小文字)で登録している場合は、既存アカウントへ直接ログインします
通知メールの送信: 既存アカウントを検出した際に、ユーザーへメールで通知します
重複作成の防止: データベースの一意制約(Unique Constraint)により、同一 Email で複数のアカウントが作成されないようにします
4.3 安全性に関する考慮事項
Email 検証: IdP が提供する Email は企業の身元認証を通過済みのため、これを信頼します
SAML 署名の検証: SAML Response のデジタル署名を厳格に検証し、偽造を防止します
タイムスタンプの確認: SAML Assertion が有効期限切れでないことを確認します
リプレイ攻撃の防止: 使用済みの SAML Response ID を記録し、再利用を防止します
5. SAML SSO の構成手順
5.1 IdP 側での構成
企業の IT 管理者は IdP(Okta、Azure AD など)で以下を行う必要があります。
新しい SAML アプリケーションを作成
MaiAgent の ACS URL を設定(Assertion Consumer Service URL)
ユーザー属性のマッピングを構成し、Email が含まれていることを確認
IdP Metadata XML をダウンロードし、MaiAgent に提供
5.2 MaiAgent 側での構成
MaiAgent の管理者は以下を行う必要があります。
IdP Metadata XML を MaiAgent の管理画面にアップロード
Entity ID を設定し、この SAML 連携を識別
属性マッピングルールを構成し、Email や氏名などのフィールドを対応付け
SAML SSO を有効化し、ログインフローをテスト
5.3 テストと検証
構成が完了したら、以下のテストを実施することを推奨します。
初回ログインテスト: アカウント自動作成機能が正常に動作することを確認
再ログインテスト: 既存アカウントでのログインを確認
Email 大文字・小文字テスト: 異なる大文字・小文字形式の Email がすべて正しく識別されることを検証
ログアウトテスト: シングルログアウト(SLO)機能が正常に動作することを確認
6. MaiAgent SAML SSO の技術的メリット
6.1 安全性のメリット
企業レベルの認証: 企業の既存の ID 管理システムを活用し、認証基準の一貫性を確保
パスワードは MaiAgent を経由しない: ユーザーのパスワードは企業の IdP でのみ検証され、漏洩リスクを低減
一元化されたアクセス制御: IT 管理者が IdP ですべてのアプリケーションのアクセス権限を一元管理可能
多要素認証の強制: IdP で MFA が有効化されている場合、ユーザーが MaiAgent にログインする際にも MFA が要求されます
6.2 管理効率のメリット
アカウントの自動作成: 手動でアカウントを作成する作業負担を軽減
アカウントの自動無効化: 従業員の退職時に IdP でアカウントを無効化すれば、MaiAgent のアクセス権も即座に失効
属性の同期: ユーザーの氏名や部署などの情報が変更された際に自動で同期
監査記録: すべてのログイン活動が完全に記録され、セキュリティ監査が容易
6.3 ユーザー体験のメリット
シームレスなログイン: ユーザーが既に企業システムにログインしている場合、MaiAgent にアクセスする際にパスワードの再入力が不要になることがあります
統一されたログイン画面: 使い慣れた企業のログインページを利用でき、追加のパスワードを記憶する必要がありません
モバイルデバイスに優しい: モバイルデバイス上での SSO 体験をサポート
7. トラブルシューティング
7.1 よくある問題
ログインできない
SAML 署名の検証に失敗
IdP の証明書が有効期限切れでなく、Metadata が最新版であることを確認
重複アカウントの作成
Email の大文字・小文字が不一致
システムに Email 正規化の修正が適用済みであることを確認
属性の欠落
IdP が必須属性を送信していない
IdP の属性マッピング構成を確認し、Email が含まれていることを確認
タイムスタンプエラー
サーバー時刻が同期していない
SP と IdP のシステム時刻が一致していることを確認(NTP の使用を推奨)
7.2 デバッグツール
SAML-tracer: ブラウザ拡張機能で、SAML メッセージを捕捉・解析できます
MaiAgent ログ: 詳細な SAML 処理ログを確認できます
IdP 管理画面: IdP 側のエラーログとユーザー属性を確認できます
8. 関連ドキュメント
組織とメンバーの管理 - SAML ユーザーの権限管理について理解する
サードパーティログイン(SSO) - ユーザーガイド内の SSO 構成説明
参考リンク
Last updated
Was this helpful?
