SimpleSAMLphp を ID プロバイダーとして使用する Drupal SAML シングル サインオン
概要
を使用した Drupal SAML 統合 miniOrange SAML SP モジュール SimpleSAMLphp と Drupal サイト間のシームレスな SSO を確立します。ユーザーは、SimpleSAMLphp の資格情報を使用して Drupal サイトにログインできます。このドキュメントでは、サービス プロバイダー (SP) としての Drupal とアイデンティティ プロバイダー (IdP) としての SimpleSAMLphp 間のシングル サインオン (SSO) を構成する手順について説明します。このモジュールは、Drupal 7、Drupal 8、Drupal 9、Drupal 10、および Drupal 11 と互換性があります。
インストール手順
- コンポーザの使用
- ドラッシュを使用する
- 手動インストール
構成手順
Drupal SAML SP メタデータ
- に行く → のワークプ → SAML ログイン構成 の 管理部門 メニュー。(/admin/config/people/miniorange_saml/idp_setup)
- [サービス プロバイダーのメタデータ] タブで、 SPエンティティID/発行者 および SP ACS URL 手元に置いてください。この SP メタデータは、SimpleSAMLphp をアイデンティティ プロバイダー (IdP) として構成するために必要です。
SimpleSAMLphp を ID プロバイダーとして設定する
-
SimpleSAML インストール ディレクトリから、次のファイルを開きます。 config/config.php そして以下を編集します。
「enable.saml20-idp」 ⇒ true
- 有効にします UserPass認証 モジュール(exampleauthに含まれています)。これは、 enable (ファイル名) 内 モジュール/例/.
-
で認証ソースを作成します config/authsources.phpファイルには 1 つのエントリが含まれている必要があります。以下を参照してください。
'__DEFAULT__', /* * 応答に署名するときに使用する秘密鍵と証明書。 * これらは cert-directory に保存されます。 */ 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', /* * ユーザーを認証するために使用される認証ソース。これは、config/authsources.php 内のエントリの 1 つと一致する必要があります。 */ 'auth' => '' 例:- 'example-userpass', // これはステップ番号 3 にあります ];
この設定により、student と employee という 2 人のユーザーが作成され、パスワードは studentpass と employeepass になります。ユーザー名とパスワードは配列インデックス (student-user の場合は student:studentpass) に保存されます。各ユーザーの属性は、インデックスによって参照される配列で構成されます。したがって、student ユーザーの場合は次のようになります。
[ 'uid' => ['学生'], 'eduPersonAffiliation' => ['メンバー', '学生'], ],
属性は、ユーザーがログオンするときに IdP によって返されます。
- 次のいずれかの方法を使用して自己署名証明書を生成します。
-
opensslコマンドの使用
openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out example.org.crt -keyout example.org.pem
-
任意のオンライン ツールを使用してこれを生成し、cert ディレクトリに追加します。
拡張子は次のようになりますexample.org.crt //(公開鍵)example.org.pem //(秘密鍵)
-
注意: SimpleSAMLphp は RSA 証明書でのみ機能します。 DSA 証明書はサポートされていません。
-
SAML 2.0 IdP は、次の場所に保存されているメタデータによって構成されます。 メタデータ/saml20-idp-hosted.phpこれは最小限の構成です:
'__DEFAULT__', /* * 応答に署名するときに使用する秘密キーと証明書。 * これらは cert ディレクトリに保存されます。 */ 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', /* * ユーザーの認証に使用される認証ソース。 これは、config/authsources.php のエントリの 1 つと一致する必要があります。 */ ' auth' => '' 例:- 'example-userpass', // これはステップ 3 で見つけることができます ];
-
設定するアイデンティティプロバイダは、接続するサービスプロバイダについて知る必要があります。これは、metadata/saml20-sp-remote.phpに保存されているメタデータによって設定されます。これは、SimpleSAMLphp SPのmetadata/saml20-sp-remote.phpメタデータファイルの最小限の例です。( example.com あなたの Drupalドメイン名.)
'https://example.com/samlassertion', 'SingleLogoutService' => 'https://example.com/user/logout', 'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid -format:emailAddress', 'simplesaml.nameidattribute' => 'mail', 'simplesaml.attributes' => true, 'attributes' => array('mail', 'givenname', 'sn', 'memberOf'), ];
注意: エンティティIDのURIと、AssertionConsumerServiceおよびシングルログアウトサービスのエンドポイントへのURLは、サービスプロバイダーによって異なります。リモートSPのメタデータがXMLファイルとして存在する場合は、組み込みのXMLからSimpleSAMLphpメタデータへのコンバーターを使用できます。このコンバーターは、デフォルトでSimpleSAMLphpインストールの/admin/metadata-converter.phpとして利用可能です。
- SimpleSAMLphp のインストールホームページにアクセスします。 (インストールの URL は次のようになります。 https://service.example.com/simplesaml/ ここで、service.example.com は SimpleSAMLphp パスに置き換える必要があります。
- 「フェデレーション」タブに移動し、「フェデレーション」をクリックします。 メタデータの表示(この IdP メタデータは、Drupal を SP として構成するために必要になります。)
Drupal を SAML サービス プロバイダーとして設定します。
- Drupal サイトに移動します。 に移動します。 サービスプロバイダーのセットアップ モジュールのタブをクリックし、 IDPメタデータのアップロード.
- 以前にダウンロードしたメタデータ ファイルを SimpleSAML から メタデータ ファイルをアップロードする テキストフィールドをクリックして、 ファイルをアップロード
注意: ID プロバイダー名を更新するには、次の手順に従います。
- 行動、選択 編集.
- SimpleSAMLphpと入力し、 アイデンティティプロバイダー名 テキストフィールド。
- 下にスクロールして 構成の保存
- Drupal と SimpleSAMLphp 間の接続をテストするには、「テスト」リンクをクリックします。
- テスト設定ポップアップで、SimpleSAMLphpの認証情報を使用してサインインします(アクティブなセッションが存在しない場合)。認証が成功すると、SimpleSAMLphpから受信した属性のリストが表示されます。 クリックします.
おめでとうございます。SimpleSAMLphp を SAML アイデンティティ プロバイダー (IdP) として、Drupal を SAML サービス プロバイダーとして正常に構成しました。
SAML SSO ログインはどのように機能しますか?
- 新しいブラウザ/プライベート ウィンドウを開き、Drupal サイトのログイン ページに移動します。
- クリック ID プロバイダー (SimpleSAMLphp) を使用したログイン リンクをクリックします。
- SimpleSAMLphp ログイン ページにリダイレクトされます。SimpleSAMLphp の資格情報を入力します。認証が成功すると、ユーザーは Drupal サイトにリダイレクトされます。

お問い合わせ