OpenID Connect Microsoft Azure Active Directory クライアント

OpenID Connect モジュールを通じて、Drupal に Microsoft Azure Active Directory(Azure AD/Entra ID)認証統合を提供します。

openid_connect_windows_aad
6,979 sites
20
drupal.org

インストール

Drupal 9, 8 v8.x-1.4
composer require 'drupal/openid_connect_windows_aad:8.x-1.4'

概要

OpenID Connect Microsoft Azure Active Directory クライアントモジュールは、OpenID Connect モジュール用の専門プラグインで、Drupal サイトが Microsoft Azure Active Directory(現在は Microsoft Entra ID として知られています)を通じてユーザーを認証できるようにします。標準の Azure AD テナントと Azure AD B2C(Business to Consumer)構成の両方をサポートしています。

このモジュールは Microsoft のアイデンティティプラットフォームとの包括的な統合を提供し、Microsoft Graph API からのユーザー情報取得、Azure AD グループメンバーシップの Drupal ロールへのマッピング、シングルサインオン/シングルサインアウトシナリオのサポートなどの機能を含みます。クライアントシークレットは Drupal Key モジュールを使用して安全に保存され、機密性の高い認証情報を設定から分離することでセキュリティを強化します。

このモジュールは、Microsoft 365 や Azure サービスを使用しているエンタープライズ組織が、Drupal ベースのアプリケーションやイントラネットにシームレスな認証体験を提供したい場合に不可欠です。

Features

  • Microsoft Azure Active Directory および Azure AD B2C との完全な OpenID Connect 認証フロー
  • ユーザープロファイルとグループメンバーシップ情報を取得するための Microsoft Graph API 統合
  • 厳格モードオプション付きの Azure AD グループから Drupal ロールへの自動および手動マッピング
  • Drupal Key モジュールを使用したクライアントシークレットの安全な保存
  • フロントチャネルログアウト機能を備えたシングルサインアウト(SSO)サポート
  • 設定可能な認可プロンプト(login、consent、select_account、create)
  • アプリケーション間でのユーザーアイデンティティマッピングのための柔軟なサブジェクトキー選択(sub または oid)
  • Azure AD からログイン時にユーザーのメールアドレスを更新するサポート
  • Azure AD B2C v2 エンドポイントの検出と互換性
  • Graph API の otherMails プロパティを使用したメールアドレスのフォールバック

Use Cases

エンタープライズイントラネット SSO

Microsoft 365 を使用している組織は、従業員が既存の職場アカウントを使用して Drupal ベースのイントラネットにログインできるようにすることができます。ユーザーは Azure AD で一度認証すると、別の資格情報なしで Microsoft サービスと Drupal サイトの両方にアクセスできます。

AD グループによるロールベースのアクセス制御

Azure AD セキュリティグループを Drupal ロールにマッピングして、適切な権限を自動的に付与します。例えば、「Content Editors」AD グループのメンバーは自動的に「editor」Drupal ロールを受け取り、「Site Administrators」AD グループのメンバーは「administrator」ロールを受け取ります。

顧客向け B2C 認証

Azure AD B2C を使用して、顧客に柔軟なサインアップとサインイン体験を提供します。Azure で設定されたソーシャルアイデンティティプロバイダーとカスタムユーザーフローをサポートし、ユーザー情報は Drupal プロファイルに流れ込みます。

マルチアプリケーションアイデンティティ共有

「oid」サブジェクトキーオプションを使用すると、ユーザーアイデンティティは同じテナント内のすべての Azure AD アプリケーションで一貫しています。これにより、複数の Drupal サイト間、または同じ Azure AD テナントを使用する他のアプリケーションとのユーザーデータ同期が可能になります。

アプリケーション間のシングルサインアウト

ユーザーが Azure AD エコシステム内のいずれかのアプリケーション(Office 365 など)からログアウトすると、Drupal サイトはログアウトコールバックを受信し、ユーザーの Drupal セッションを自動的に終了して、セキュリティコンプライアンスを確保します。

Tips

  • 最良の互換性と将来のサポートのために、非推奨の Azure AD Graph API の代わりに Microsoft Graph API v1.0 を使用してください
  • 開発、ステージング、本番環境用に別々の Azure AD アプリ登録を作成してください
  • 本番環境では Key モジュールのファイルベースのキープロバイダーを使用して、データベース外にシークレットを保存してください
  • 同じ Azure テナントを使用する複数の Drupal サイト間でユーザーデータを同期する必要がある場合は、「oid」サブジェクトキーを設定してください
  • ロール割り当てを Azure AD を通じて一元管理する必要がある本番環境では、厳格なグループマッピングモードを有効にしてください
  • 本番稼働前にシングルサインアウトが正しく機能することを確認するためにログアウト機能をテストしてください
  • 他のアプリケーションから開始される SSO ログアウトを有効にするために、Azure アプリ登録にフロントチャネルログアウト URL を追加してください

Technical Details

Admin Pages 1
OpenID Connect 設定 /admin/config/services/openid-connect

OpenID Connect クライアントの設定ページ。このモジュールは「Windows Azure AD」クライアントタイプを追加し、このページから追加および設定できます。

Hooks 3
hook_openid_connect_userinfo_save

OpenID Connect 認証後にユーザーデータを処理します。このモジュールはこれを使用してメールアドレスを更新し、Azure AD グループを Drupal ロールにマッピングします。

hook_openid_connect_redirect_logout_alter

適切な Azure AD ログアウトのために logout_hint パラメータを追加するようにログアウトリダイレクトレスポンスを変更します。ID トークンを解析して login_hint クレームを抽出します。

hook_openid_connect_userinfo_alter

取得後に userinfo データを変更します。「sub」と「oid」の両方のクレームを保存し、oid をサブジェクトキーとして使用する場合はオプションで「oid」を「sub」にマッピングします。

Troubleshooting 5
UserInfo でメールアドレスが見つからない

Azure AD アプリ登録で ID トークンに「email」クレームを含めるよう設定してください。または、モジュール設定で「メールアドレスに Graph API の otherMails プロパティを使用」または「メールアドレス不明警告を非表示」を有効にしてください。

AD グループがロールにマッピングされない

ユーザー情報エンドポイント設定として Microsoft Graph API または Azure AD Graph API(非推奨)のいずれかを選択していることを確認してください。Graph API が設定されていないと、モジュールはグループ情報を取得できません。また、Azure でアプリケーションに「GroupMember.Read.All」API 権限があることを確認してください。

シングルサインアウトが機能しない

以下を確認してください: 1) モジュール設定でエンドセッションエンドポイントが設定されている、2) メインの OpenID Connect 設定で SSOut が有効になっている、3) Azure AD アプリ登録でフロントチャネルログアウト URL が設定されている。

「oid」サブジェクトキーでユーザーログインが失敗する

「oid」サブジェクトキーには openid_connect モジュールへのパッチが必要です。詳細情報と必要なパッチについては https://www.drupal.org/i/3298472 を参照してください。

リソースエラーでトークン取得が失敗する

OAuth v2.0 エンドポイントでは、「resource」パラメータは使用されません。エンドポイントが v2.0 プロトコル用に設定されていることを確認してください。v1.0 エンドポイントの場合、モジュールは適切なリソースパラメータを自動的に追加します。

Security Notes 6
  • クライアントシークレットは Drupal Key モジュールを使用して保存され、ファイルベース、環境変数、外部キー管理システムなど、さまざまな安全なストレージバックエンドをサポートします
  • シングルサインアウトエンドポイント(/openid-connect/windows_aad/signout)は Azure AD がログアウトを開始できるように公開アクセス可能ですが、アクションを実行する前にセッションと設定を検証します
  • 失敗したまたは疑わしいログアウト試行はセキュリティ監視のためにログに記録されます
  • モジュールは「sub」(アプリケーション固有)と「oid」(テナント全体)の両方のサブジェクトキーをサポートします - どちらを使用するかを選択する際はセキュリティへの影響を考慮してください
  • 厳格なロールマッピングモードは、Azure AD グループメンバーシップで許可されている以外のロールをユーザーに付与できないことを保証します
  • Azure AD エンドポイントとのすべての通信は HTTPS を使用します