SAML SSO - サービスプロバイダー

Azure AD、Okta、ADFS、Google Appsなどの外部SAML 2.0アイデンティティプロバイダーを通じてユーザー認証を行うことで、DrupalサイトでSAML 2.0シングルサインオン(SSO)を実現します。

miniorange_saml
2,448 sites
21
drupal.org

インストール

Drupal 11, 10, 9 v3.1.0
composer require 'drupal/miniorange_saml:^3.1'

概要

miniOrange SAMLサービスプロバイダーモジュールは、DrupalサイトをSAML 2.0サービスプロバイダー(SP)として機能させ、外部のSAML 2.0準拠アイデンティティプロバイダー(IdP)を通じたユーザー認証を可能にします。これにより、ユーザーがDrupalサイト専用の認証情報を別途管理する必要なく、安全なシングルサインオン(SSO)機能を提供できます。

このモジュールは、Microsoft Azure AD、ADFS、Okta、Salesforce、Google Apps(Google Workspace)、Shibboleth、SimpleSAMLphp、OpenAM、Centrify、PingOne、PingFederate、RSA、IBM、Oracle、OneLogin、Bitium、Auth0など、幅広いアイデンティティプロバイダーをサポートしています。DrupalサイトとIdP間の信頼関係を設定するための包括的な構成オプションを提供します。

主なSAML 2.0機能には、メタデータ交換(アップロードとURLベースの両方)、X.509証明書管理、NameIDフォーマット設定、ACS(Assertion Consumer Service)エンドポイント処理が含まれます。モジュールは新規SSOユーザーのアカウントを自動作成し、IdP属性をDrupalユーザーフィールドにマッピングできます。

Features

  • Drupal向けSAML 2.0準拠サービスプロバイダー実装
  • Azure AD、Okta、ADFS、Google Apps、Salesforce、Shibbolethなど複数のアイデンティティプロバイダーをサポート
  • URLまたはXMLファイルアップロードによる自動IdPメタデータ設定
  • XML形式でのSPメタデータ生成とダウンロード
  • 本番稼働前にSSO設定を検証するテスト設定機能
  • デバッグ用のSAMLリクエストとレスポンスの表示
  • 初回SSOユーザーの自動アカウント作成
  • SSOユーザーにデフォルトのDrupalロールを割り当てるロールマッピング(無料版は基本機能のみ)
  • 標準Drupalログインフォームおよびカスタムフォームへのログインリンク統合
  • 文字エンコーディングサポート付きX.509証明書管理
  • カスタマイズ可能なSP Entity IDとベースURL
  • 管理UIから直接プレミアム機能の7日間トライアルをリクエスト可能

Use Cases

Azure ADを使用した企業向けシングルサインオン

Microsoft 365を使用している組織では、従業員が既存のMicrosoft資格情報を使用してDrupalサイトにログインできるようになります。このモジュールはService Providerとして機能し、Azure AD(Entra ID)をIdentity Providerとして接続します。ユーザーがDrupalログインページで「Login using Azure AD」をクリックすると、認証のためにMicrosoftにリダイレクトされます。ログインに成功すると、SAML属性に基づいてユーザーアカウントが作成または更新され、自動的にDrupalにログインします。

Shibbolethを使用した教育機関向けSSO

大学や研究機関では、フェデレーションID管理にShibbolethを使用していることが多くあります。このモジュールにより、Drupalサイトが機関のSSOインフラストラクチャに参加でき、学生や教職員が別途アカウントを作成することなく、機関の資格情報を使用してサイトにアクセスできるようになります。

複数のIdPを使用したマルチテナントSaaSアプリケーション

複数の企業顧客にサービスを提供するDrupalベースのSaaSプラットフォームでは、プレミアムバージョンを使用して各顧客に異なるIdentity Providerを設定できます。ドメインベースのSSOルーティングにより、ユーザーのメールドメインまたはアクセスするサブドメインに基づいて、所属組織のIdPにユーザーを誘導します。

強制認証を使用したイントラネットポータル

社内ポータルでは、強制認証を有効にして、すべてのユーザーに企業のIdP経由でのログインを要求できます。匿名アクセスはブロックされ、ユーザーはどのページにアクセスしても自動的にIdPにリダイレクトされます。これにより、認証された従業員のみが会社のリソースにアクセスできるようになります。

ジャストインタイムプロビジョニングを使用した顧客ポータル

顧客向けポータルでは、顧客が自社のIdentity Provider(顧客のIT部門が設定したOktaやOneLoginなど)を使用してログインできるようにすることができます。このモジュールは初回ログイン時に自動的にDrupalユーザーアカウントを作成し、IdPからのSAML属性に基づいて適切なロールを割り当てます。

SSO設定のテスト

すべてのユーザーに対してSSOを有効にする前に、管理者はTest Configuration機能を使用して統合が正しく動作することを確認できます。これにより、完全なSSOフローを実行するポップアップウィンドウが開き、IdPから受信したすべての属性を含むSAMLレスポンスが表示されます。SAML RequestボタンとSAML Responseボタンは、設定の問題をトラブルシューティングするのに役立ちます。

Tips

  • すべてのユーザーに対してSSOを有効にする前に、必ずTest Configurationボタンを使用してSSO設定を確認してください
  • Service Provider MetadataタブからSPメタデータXMLファイルをダウンロードし、IdPにインポートすると設定が容易になります
  • 特に非標準のIdPからの証明書で証明書検証の問題が発生した場合は、Character Encodingを有効にしてください
  • 詳細なデバッグにはSAML RequestボタンとSAML Responseボタンを使用してください。これらは送受信される正確なXMLを表示します
  • 同じIdPを複数のDrupalサイトで使用する予定の場合は、一意の識別を確保するためにカスタムSP Entity IDを設定してください
  • IdPのX.509証明書のバックアップを保持し、サービス中断を避けるために証明書のローテーションを監視してください
  • 本番環境では、属性マッピングやロールプロビジョニングなどの高度な機能を評価するためにプレミアム機能のトライアルをリクエストしてください
  • /samllogin URLは、よりクリーンなユーザーエクスペリエンスのためにナビゲーションメニューやログインボタンとして直接使用できます

Technical Details

Admin Pages 8
Service Providerメタデータ /admin/config/people/miniorange_saml/idp_setup

Identity Providerに設定する必要があるService Providerメタデータを表示します。このページには、SP Entity ID、ACS URL、Audience URI、ダウンロード可能なXMLメタデータなど、IdP側で信頼関係を設定するために必要なすべての値が表示されます。

Service Providerセットアップ /admin/config/people/miniorange_saml/sp_setup

Identity Provider設定を構成します。ここでEntity ID、ログインURL、X.509証明書を含むIdPメタデータを入力します。手動設定と自動メタデータインポートの両方をサポートしています。

ユーザープロビジョニング /admin/config/people/miniorange_saml/user_provisioning

自動ユーザープロビジョニングと同期機能を設定します。このタブでは、さまざまなIdentity ProviderとのSCIMベースまたはAPIベースのユーザー同期を可能にするユーザープロビジョニングバンドルプランを紹介しています。

マッピング /admin/config/people/miniorange_saml/Mapping

Identity ProviderからのSAML属性をDrupalユーザーフィールドとロールにマッピングする方法を設定します。基本的なロールマッピング(無料)と高度な属性/カスタムロールマッピング(プレミアム)が含まれます。

サインイン /admin/config/people/miniorange_saml/signon_settings

ユーザー検索方法、リダイレクトURL、自動作成設定、強制認証、ドメインベースの制限を含むサインイン動作を設定します。ほとんどの機能はプレミアムです。

詳細設定 /admin/config/people/miniorange_saml/AdvanceSettings

モジュール設定のインポートとエクスポート、およびユーザープロビジョニング(SCIM)などの関連するminiOrangeモジュールに関するプロモーション情報を表示します。

アップグレードプラン /admin/config/people/miniorange_saml/Licensing

利用可能なライセンスプランとプレミアム機能を表示します。Standard、Premium、Enterpriseプランの機能と価格を比較できます。

お問い合わせ /admin/config/people/miniorange_saml/MiniorageSupport

miniOrangeサポートチームにサポートクエリ、機能リクエスト、またはデモリクエストを送信します。

権限 1
サイト設定の管理

miniOrange SAML SP モジュールにアクセスして設定するために必要です。これは Drupal コアの権限です。

Hooks 3
hook_form_alter

標準のDrupalログインフォーム(user_login_form)、ログインBlock(user_login_block)、およびモジュール設定で構成されたカスタムフォームにSAML SSOログインリンクを追加します。

hook_help

admin/help/miniorange_samlでアクセス可能なモジュールのヘルプドキュメントを提供します。設定手順、セットアップガイドへのリンク、FAQへのリンクが含まれます。

hook_theme

モジュールで使用される3つのTwigテンプレートを登録します:トライアルリクエストフォーム用のmo-saml-request-trial、ライセンスページ用のmo-saml-licensing-new、サポートチケット確認用のmo-saml-send-ticket-info。

Troubleshooting 7
「Invalid Audience URI」エラーでSSOが失敗する

Identity Providerで設定されたAudience URIがSP Entity IDと一致していません。Service Provider Metadataタブで正しいAudience URI値を確認し、IdP設定を更新してください。Audience URIはSP Entity IDと完全に一致する必要があります。

「Issuer cannot be verified」エラーでSSOが失敗する

モジュールで設定されたIdP Entity IDが、SAMLレスポンスでIdPが送信する値と一致していません。Test Configurationを使用してエラーメッセージで期待されるEntity IDを確認し、Service Provider Setupの「IdP Entity ID or Issuer」フィールドを更新してください。

証明書フィンガープリントの不一致でSSOが失敗する

モジュールで設定されたX.509証明書が、IdPがレスポンスの署名に使用している証明書と一致していません。IdPから現在の証明書を取得し、X.509 Certificateフィールドを更新してください。IdPが証明書をローテーションする場合は、最新のものを使用していることを確認してください。

ログインリンクがログインページに表示されない

Service Provider Setupで「Enable login with SAML」がチェックされていること、およびIdP設定が完了していること(IdP Name、Entity ID、Login URLがすべて設定されていること)を確認してください。変更後はDrupalキャッシュをクリアしてください。

SSO後にユーザーが「User Blocked By Administrator」エラーを受け取る

Drupalのユーザーアカウントがブロックされています。Peopleに移動してユーザーのブロックを解除するか、新しいSSOユーザーに影響を与えている可能性のある自動ブロックルールがないか確認してください。

SAMLレスポンスで属性が空または欠落している

SAMLアサーションで必要な属性をリリースするようにIdentity Providerを設定してください。少なくとも、NameIDまたは設定されたメール/ユーザー名属性が送信されていることを確認してください。Test Configuration機能を使用して、受信している属性を確認できます。

バリデーションエラーにより設定を保存できない

すべての必須フィールドが入力されていることを確認してください:Identity Provider Name、IdP Entity ID or Issuer、およびSAML Login URLは必須です。Login URLは有効なURL形式である必要があります。X.509証明書がBEGIN/END CERTIFICATEマーカーで適切にフォーマットされていることを確認してください。

Security Notes 8
  • モジュールは、改ざんを防ぐために設定されたX.509証明書を使用してSAMLレスポンスの署名を検証します
  • SAMLアサーションには、リプレイ攻撃を防ぐための時間ベースの有効期間(2分の許容範囲)があります
  • Destination URLの検証により、SAMLレスポンスは正しいDrupalサイトに対してのみ受け入れられます
  • SSOユーザーのパスワードは自動的に生成され、公開されません。認証はIdPで処理されます
  • X.509証明書は、信頼できないソースからではなく、IdP管理者から安全に取得する必要があります
  • 転送中のSAML通信を保護するために、DrupalサイトでHTTPSを有効にすることを検討してください
  • プレミアム機能にはバックドアログインオプションが含まれています。代替認証パスを提供するため、慎重に使用してください
  • モジュールはユーザー資格情報を保存または送信しません。すべての認証はIdentity Providerで行われます