SAML プロトコルを使用した Drupal ヘッドレス SSO で無限の可能性を解き放つ
概要
miniOrangeのヘッドレスSSOセキュリティソリューションは、ヘッドレスアプリケーション、Drupalバックエンド、およびIDプロバイダー(IdP)間でシームレスなシングルサインオン(SSO)を実現します。この認証プロセスでは、まずユーザーは認証のためにIDプロバイダーのログインページにリダイレクトされます。認証が成功すると、フロントエンドアプリケーションにリダイレクトされます。この段階で、ユーザーのIDを安全に検証するためのJSON Webトークン(JWT)が生成され、フロントエンドサイトに送信されます。(オプション:このトークンは、Drupalからさらに情報を取得する際のAPI検証に使用できます。)次に、このドキュメントでは、ヘッドレスDrupalセットアップでSSOを構成する手順について説明します。
前提条件
- miniOrange SAML SP モジュール :これ モジュール Drupal サイトと SAML プロバイダー間の SSO を有効にします。
- REST & JSON API 認証モジュール :
- SSOが実行されると、 モジュール JWT を生成し、このトークンをフロントエンド アプリケーションに送信するのに役立ちます。
- このトークンは、Drupal への API リクエストとともにヘッダーで使用して、他の API を認証/検証することができます。REST および JSON API 認証モジュールは、安全なアクセスを確保するために、API 呼び出しを許可する前に JWT を検証します。
バックエンド構成
- miniOrange SAML モジュール: これを参照してください セットアップガイド Drupal サイトと目的の SAML ID プロバイダー間の SSO を確立します。
- REST & JSON API 認証モジュール:
- JWTを使用してDrupal APIを認証するには、次の手順に従ってモジュールでJWTベースの認証方法を設定します。 セットアップガイド。
- フロントエンドへのログイン URL を設定します。
- ログインURLを取得するには、miniorange_samlモジュールに移動し、 サービスプロバイダーのセットアップ タブ。SSO リンクをコピーし、フロントエンドのログイン ページに統合します。
- フロントエンドエンドポイントを構成します。
- REST & JSON API 認証モジュールは、ログインしたユーザーに対応する JWT を生成します。モジュールからこの JWT を取得するには、以下の手順に従って API 認証モジュールでリダイレクト URL を設定します。
- に移動します 詳細設定 タブ REST および JSON API 認証 モジュールを開きます。
- ヘッドレス SSO のトークン エンドポイント構成 セクションで、シングルサインオン(SSO)プロセス後にブラウザがリダイレクトするフロントエンドアプリケーションのエンドポイントを、コードとリレー状態パラメータとともに入力します。その後、 トークンエンドポイント構成を保存する
- フロントエンドのログアウトリダイレクト URL を設定します。
- ユーザーがDrupalサイトからログアウトすると、フロントエンド側に戻ります。フロントエンドアプリケーションのこのエンドポイントを設定するには、 ミニオレンジ モジュールを開きます。
- 「ログアウト後のデフォルトのリダイレクト URL」 テキスト フィールドに、ログアウト後にユーザーがリダイレクトされるフロントエンド側のエンドポイントを入力します。
フロントエンドシーンの解明
このセクションでは、ユーザーがフロントエンド側で行う必要があるすべてのことについて説明します。また、ユーザーがフロントエンドで目にする可能性のある変更についても説明します。では始めましょう。
- ログインフロー:
- SSO URL を使用してフロントエンド アプリケーションからログインを開始します。
- ユーザーは設定された IdP にリダイレクトされます。
- 認証するにはユーザーの資格情報を入力します。
- 認証が成功すると、ユーザーは URL のクエリ パラメータとしてコードとリレー状態が含まれた状態でフロントエンドにリダイレクトされます。
- 前の手順で取得したコードを使用して、Drupal のトークン エンドポイントにリクエストを送信します。そのためには、以下の手順に従います。
- トークンエンドポイントを ヘッドレス SSO のトークン エンドポイント構成 詳細は下の画像を参照してください。
- 受信したコードを使用して POST リクエストを行う例:
- ユーザーがフロントエンドでコード「(received_code)」を受け取ったとします。
- 次に、以下の形式を使用して、このコードを使用して POST リクエストを作成します。
注:リレー状態は、ログインが開始されるパラメータです。宛先パラメータが現在のログインURLである場合は、リレー状態は宛先パラメータの値になります。
ポストマンフォーマット:
HTTP: POST /drupal10_1_1/web/getToken HTTP/1.1 ホスト: localhost コンテンツ タイプ: application/x-www-form-urlencoded コンテンツの長さ: 35 code=MjEOxuSuQyd1vUE7Ft5K5fT8Syh25c CURL: curl --location 'http://localhost/drupal10_1_1/web/getToken' \ --header 'コンテンツ タイプ: application/x-www-form-urlencoded' \ --data-urlencode 'code=MjEOxuSuQyd1vUE7Ft5K5fT8Syh25c'
- フロントエンドアプリケーションからログアウトを開始します。(URL を使用) {drupal-base-url}/ユーザー/ログアウト)
- シングル ログアウトの構成を確認します。
- これにより、ユーザーは Drupal サイトと IdP の両方からログアウトされます。
- Drupalサイトからログアウトすると、ユーザーは 構成されたエンドポイント.
注:ヘッダーにJWTトークンが含まれるAPIリクエストの形式については、こちらのセットアップガイドを参照してください。
