プラグイン/認証/Saml: Difference between revisions
From Mahara Wiki
No edit summary |
|||
(59 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
SAML 2.0ベースのSSO統合用認証プラグインです。このプラグインはサービスプロバイダとして優れたソフトウェア[https://simplesamlphp.org/ SimpleSAMLPHP]を使用します。 | SAML 2.0ベースのSSO統合用認証プラグインです。このプラグインはサービスプロバイダとして優れたソフトウェア[https://simplesamlphp.org/ SimpleSAMLPHP]を使用します。 | ||
Line 17: | Line 15: | ||
そして、あなたは接続されているはずです。 | そして、あなたは接続されているはずです。 | ||
===php-memcachedモジュールがインストールされていること | ===php-memcachedモジュールがインストールされていること=== | ||
php-memcachedをインストールするには以下のコマンドを実行してください: | |||
sudo apt-get install php-memcached | sudo apt-get install php-memcached | ||
sudo phpenmod memcached | sudo phpenmod memcached | ||
sudo service apache2 restart | sudo service apache2 restart | ||
=== | ===あなたのconfig.phpファイルを更新してSAMLセッションにmemcachedを使用するよう知らせる=== | ||
config.phpファイルに以下の設定を追加してください: | |||
$cfg->ssphpsessionhandler = 'memcached'; | $cfg->ssphpsessionhandler = 'memcached'; | ||
$cfg->memcacheservers = '127.0.0.1:11211'; // | $cfg->memcacheservers = '127.0.0.1:11211'; // あなたのmemcachedが異なるIP/ポートを使用している場合、変更してください。 | ||
=== | ===正しいSSPHPファイルの存在を確認する=== | ||
あなたがMaharaをgit経由でインストールおよび使用している場合、htdocsディレクトリ (Makefileファイルが存在する場所) の親ディレクトリで以下のコマンドを実行してssphpモジュールをインストールする必要があります。 | |||
make cleanssphp && make ssphp | make cleanssphp && make ssphp | ||
このコマンドにより古いすべてのバージョンが削除されます。そしてあなたが使用しているMaharaのバージョンに合わせてコンポーザ経由で最新バージョンがインストールされます。 | |||
=== | ===Maharaでプラグインが有効であることを確認する=== | ||
「管理メニュー (レンチのアイコン) -> 拡張機能 -> プラグイン管理」で確認できます。 | |||
詳細は[https://manual.mahara.org/en/18.10/administration/extensions.html#authentication-saml マニュアル- SAML設定]をご覧ください。 | |||
プラグインが正しく設定されていることを確認するにはSAML認証設定アイコン (歯車) をクリックしてください。 | |||
あなたが認証したいアイデンティティプロバイダ (IdP) に提供するためのサービスプロバイダ(SP)メタデータを取得するには「メタデータを表示する」リンクをクリックしてください。 | |||
=== | ===次に私たちはインスティテューションレベルの設定が必要です=== | ||
それぞれのインスティテューション内でSAML 2.0アイデンティティプロバイダを追加してください: | |||
詳細は[https://manual.mahara.org/en/22.10/administration/institutions.html#saml-authentication マニュアル - SAMLインスティテューション設定]をご覧ください。 | |||
=== | ===あなたのSAML IdPメタデータをカスタマイズするには=== | ||
あなたのサイトで2つ以上のアイデンティティプロバイダ (IdP) が使用されている場合、ユーザがSSOボタンでサイトログインを試みた時点で「アイデンティティプロバイダディスカバリ」ページが表示された上でどのIdPでログインするか選択することになります。 | |||
IdPから提供されたメタデータに以下の値を含む場合 | |||
* OrganizationName | * OrganizationName | ||
* OrganizationDisplayName | * OrganizationDisplayName | ||
* Logo | * Logo | ||
これらはディスカバリページで使用されます。 | |||
あなたのIdPのメタデータがこれらの値を提供しない場合 - アイデンティティプロバイダ側でデータを更新した上で更新されたmetadata.xmlファイルを提供できるかどうか尋ねてください。特にあなたがメタデータ更新URLを使用している場合、これは最良の選択肢となるでしょう。 | |||
アイデンティティプロバイダ側がmetadata.xmlファイルを提供できない場合、あなたは変更内容を手動で追加できます。追加手順は以下のとおりです: | |||
1) | 1) サイト管理者としてログインしてSAMLメタデータを使用するインスティテューションを編集してください。 | ||
2) | 2) SAML認証インスタンスを編集してください。 | ||
3) | 3) 「インスティテューションアイデンティティプロバイダSAMLメタデータ」フィールドで以下のように変更してください。 | ||
a) | a) あなたがロゴイメージを使用したい場合 | ||
metadata.xmlファイル内で | |||
</IDPSSODescriptor>行の直前に以下の内容を記述してください: | |||
<Extensions> | <Extensions> | ||
<mdui:UIInfo xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui"> | <mdui:UIInfo xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui"> | ||
<mdui:Logo width="120" height="30" xml:lang=" | <mdui:Logo width="120" height="30" xml:lang="ja">[ロゴのURL]</mdui:Logo> | ||
</mdui:UIInfo> | </mdui:UIInfo> | ||
</Extensions> | </Extensions> | ||
[ロゴのURL]を更新してインターネット経由で到達可能なIdPのロゴを指すようにしてください。例) https://mahara.org/theme/mahara-org/images/site-logo.svg | |||
必要に応じて高さおよび幅の値を変更してください。最適なイメージは次のとおりです: 120 x 30px png / svg | |||
b) | b) プロバイダの詳細設定は以下のとおりです: | ||
</IDPSSODescriptor> 行のすぐ下に以下の内容を記述してください。 | |||
<Organization> | <Organization> | ||
<OrganizationName xml:lang="en">[ | <OrganizationName xml:lang="en">[プロバイダ名]</OrganizationName> | ||
<OrganizationDisplayName xml:lang="en">[ | <OrganizationDisplayName xml:lang="en">[アイデンティティプロバイダ名]</OrganizationDisplayName> | ||
</Organization> | </Organization> | ||
- | - [プロバイダ名]をIdPが属する組織名に変更してください。例) Mahara.org | ||
- | - [アイデンティティプロバイダ名]をIdPシステム名に変更してください。例) Maharaシングルサインオン | ||
''' | '''メモ''' あなたのIdPメタデータ構造によっては新しい「Extensions」および「Organization*」行に「</IDPSSODescriptor>」行と同じ接頭辞を付加する必要があります。例) 例えばその行が</md:IDPSSODescriptor>のような場合、「md:」で開始していない行に「md:」を付加してください。 | ||
== | ==ステージングサーバへのバックアップの扱いについて== | ||
あなたがテスト/ステージングサーバでテスト用に独自のSAML設定を使用している場合、本番インスタンスからサイトバックアップ作成時にそのサーバを削除しないようにする必要があります。例えば次のシナリオの場合: | |||
SAML使用の実運用Maharaサイト ===========> アイデンティティプロバイダ「実運用」エンドポイント | |||
接続 | |||
ステージング/テストMaharaサイト ===========> アイデンティティプロバイダ「テスト」エンドポイント | |||
または アイデンティティプロバイダ「実運用」エンドポイント | |||
次にバックアップを作成する場合、あなたはステージング/テストサイトでSAMLが動作しないことを回避したいと思います。このためには以下を実施する必要があります: | |||
=== | ===バックアップ作成前=== | ||
1) | 1) ステージング/テストサイトが正しく動作している状態で開始します - あなたが期待どおりにIDプロバイダのエンドポイントに正しくログインできることを確認してください。次にdatarootディレクトリにある証明書.crtおよび.pemファイルのバックアップを作成してrsync等で上書きまたは削除されないようにします。 | ||
例: | |||
cp /path/to/dataroot/certificate/server.crt /path/to/dataroot/certificate/server.crt.staging | cp /path/to/dataroot/certificate/server.crt /path/to/dataroot/certificate/server.crt.staging | ||
cp /path/to/dataroot/certificate/server.pem /path/to/dataroot/certificate/server.pem.staging | cp /path/to/dataroot/certificate/server.pem /path/to/dataroot/certificate/server.pem.staging | ||
1a) | 1a) あなたのステージング/テストサイトが本番サイトとは異なるアイデンティティプロバイダに接続する場合、バックアップ後に元に戻すため、メタデータのデータルートディレクトリ (/path/to/dataroot/metadata/) バックアップする必要があります。 | ||
1b) | 1b) そして、私たちはサービスプロバイダIDのデータベース値を検索して保存する必要があります。データベース値は以下のコマンドで探せます: | ||
SELECT value FROM auth_config WHERE field ='spentityid'; | SELECT value FROM auth_config WHERE field ='spentityid'; | ||
=== | ===バックアップ作成後=== | ||
2) | 2) 実稼働サイトをステージングにバックアップする場合、最良の方法はrsyncに/path/to/dataroot/certificate/および/path/to/dataroot/metadata/ディレクトリを無視させることです。それができない場合、バックアップされたファイルを元の場所にコピーする必要があります。 | ||
例: | |||
cp /path/to/dataroot/certificate/server.crt.staging /path/to/dataroot/certificate/server.crt | cp /path/to/dataroot/certificate/server.crt.staging /path/to/dataroot/certificate/server.crt | ||
cp /path/to/dataroot/certificate/server.pem.staging /path/to/dataroot/certificate/server.pem | cp /path/to/dataroot/certificate/server.pem.staging /path/to/dataroot/certificate/server.pem | ||
2a) そして、必要であればバックアップしたステージング/テストメタデータを元に戻してください。 | |||
UPDATE auth_config SET value = 'my_SP_value' WHERE field ='spentityid'; | UPDATE auth_config SET value = 'my_SP_value' WHERE field ='spentityid'; | ||
これでSAMLが再度動作するようになったはずです。 | |||
あなたがこれらのファイルおよびデータベース情報をバックアップしていない場合、「Admin -> Extensions -> SAML設定」(admin/extensions/pluginconfig.php?plugintype=auth&pluginname=saml) からステージング/テストサイトでSAML証明書を再度生成した後、「メタデータを表示する」の情報をアイデンティティプロバイダに再度提供する必要があります。 | |||
[[Category:プラグイン]][[Category:認証プラグイン]] | [[Category:プラグイン]][[Category:認証プラグイン]] |
Latest revision as of 12:14, 4 April 2023
SAML 2.0ベースのSSO統合用認証プラグインです。このプラグインはサービスプロバイダとして優れたソフトウェアSimpleSAMLPHPを使用します。
このプラグインはMaharaコアの一部として配布されます。
あなたがこのプラグインを使用またはテストするには以下が必要です:
memcachedサーバが稼働していること
そして、あなたが接続に使用できるIPアドレスおよびポート番号を知っていること。
ローカル (Linux) にインストールするには以下のコマンドを実行してください:
sudo apt-get install memcached
これでポート11211で動作するよう設定されるはずです。確認するには以下のコマンドを実行してください:
telnet 127.0.0.1 11211
そして、あなたは接続されているはずです。
php-memcachedモジュールがインストールされていること
php-memcachedをインストールするには以下のコマンドを実行してください:
sudo apt-get install php-memcached sudo phpenmod memcached sudo service apache2 restart
あなたのconfig.phpファイルを更新してSAMLセッションにmemcachedを使用するよう知らせる
config.phpファイルに以下の設定を追加してください:
$cfg->ssphpsessionhandler = 'memcached'; $cfg->memcacheservers = '127.0.0.1:11211'; // あなたのmemcachedが異なるIP/ポートを使用している場合、変更してください。
正しいSSPHPファイルの存在を確認する
あなたがMaharaをgit経由でインストールおよび使用している場合、htdocsディレクトリ (Makefileファイルが存在する場所) の親ディレクトリで以下のコマンドを実行してssphpモジュールをインストールする必要があります。
make cleanssphp && make ssphp
このコマンドにより古いすべてのバージョンが削除されます。そしてあなたが使用しているMaharaのバージョンに合わせてコンポーザ経由で最新バージョンがインストールされます。
Maharaでプラグインが有効であることを確認する
「管理メニュー (レンチのアイコン) -> 拡張機能 -> プラグイン管理」で確認できます。 詳細はマニュアル- SAML設定をご覧ください。
プラグインが正しく設定されていることを確認するにはSAML認証設定アイコン (歯車) をクリックしてください。
あなたが認証したいアイデンティティプロバイダ (IdP) に提供するためのサービスプロバイダ(SP)メタデータを取得するには「メタデータを表示する」リンクをクリックしてください。
次に私たちはインスティテューションレベルの設定が必要です
それぞれのインスティテューション内でSAML 2.0アイデンティティプロバイダを追加してください:
詳細はマニュアル - SAMLインスティテューション設定をご覧ください。
あなたのSAML IdPメタデータをカスタマイズするには
あなたのサイトで2つ以上のアイデンティティプロバイダ (IdP) が使用されている場合、ユーザがSSOボタンでサイトログインを試みた時点で「アイデンティティプロバイダディスカバリ」ページが表示された上でどのIdPでログインするか選択することになります。
IdPから提供されたメタデータに以下の値を含む場合
- OrganizationName
- OrganizationDisplayName
- Logo
これらはディスカバリページで使用されます。
あなたのIdPのメタデータがこれらの値を提供しない場合 - アイデンティティプロバイダ側でデータを更新した上で更新されたmetadata.xmlファイルを提供できるかどうか尋ねてください。特にあなたがメタデータ更新URLを使用している場合、これは最良の選択肢となるでしょう。
アイデンティティプロバイダ側がmetadata.xmlファイルを提供できない場合、あなたは変更内容を手動で追加できます。追加手順は以下のとおりです:
1) サイト管理者としてログインしてSAMLメタデータを使用するインスティテューションを編集してください。
2) SAML認証インスタンスを編集してください。
3) 「インスティテューションアイデンティティプロバイダSAMLメタデータ」フィールドで以下のように変更してください。
a) あなたがロゴイメージを使用したい場合 metadata.xmlファイル内で
</IDPSSODescriptor>行の直前に以下の内容を記述してください:
<Extensions> <mdui:UIInfo xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui"> <mdui:Logo width="120" height="30" xml:lang="ja">[ロゴのURL]</mdui:Logo> </mdui:UIInfo> </Extensions>
[ロゴのURL]を更新してインターネット経由で到達可能なIdPのロゴを指すようにしてください。例) https://mahara.org/theme/mahara-org/images/site-logo.svg 必要に応じて高さおよび幅の値を変更してください。最適なイメージは次のとおりです: 120 x 30px png / svg
b) プロバイダの詳細設定は以下のとおりです:
</IDPSSODescriptor> 行のすぐ下に以下の内容を記述してください。
<Organization> <OrganizationName xml:lang="en">[プロバイダ名]</OrganizationName> <OrganizationDisplayName xml:lang="en">[アイデンティティプロバイダ名]</OrganizationDisplayName> </Organization>
- [プロバイダ名]をIdPが属する組織名に変更してください。例) Mahara.org
- [アイデンティティプロバイダ名]をIdPシステム名に変更してください。例) Maharaシングルサインオン
メモ あなたのIdPメタデータ構造によっては新しい「Extensions」および「Organization*」行に「</IDPSSODescriptor>」行と同じ接頭辞を付加する必要があります。例) 例えばその行が</md:IDPSSODescriptor>のような場合、「md:」で開始していない行に「md:」を付加してください。
ステージングサーバへのバックアップの扱いについて
あなたがテスト/ステージングサーバでテスト用に独自のSAML設定を使用している場合、本番インスタンスからサイトバックアップ作成時にそのサーバを削除しないようにする必要があります。例えば次のシナリオの場合:
SAML使用の実運用Maharaサイト ===========> アイデンティティプロバイダ「実運用」エンドポイント 接続 ステージング/テストMaharaサイト ===========> アイデンティティプロバイダ「テスト」エンドポイント または アイデンティティプロバイダ「実運用」エンドポイント
次にバックアップを作成する場合、あなたはステージング/テストサイトでSAMLが動作しないことを回避したいと思います。このためには以下を実施する必要があります:
バックアップ作成前
1) ステージング/テストサイトが正しく動作している状態で開始します - あなたが期待どおりにIDプロバイダのエンドポイントに正しくログインできることを確認してください。次にdatarootディレクトリにある証明書.crtおよび.pemファイルのバックアップを作成してrsync等で上書きまたは削除されないようにします。
例:
cp /path/to/dataroot/certificate/server.crt /path/to/dataroot/certificate/server.crt.staging cp /path/to/dataroot/certificate/server.pem /path/to/dataroot/certificate/server.pem.staging
1a) あなたのステージング/テストサイトが本番サイトとは異なるアイデンティティプロバイダに接続する場合、バックアップ後に元に戻すため、メタデータのデータルートディレクトリ (/path/to/dataroot/metadata/) バックアップする必要があります。
1b) そして、私たちはサービスプロバイダIDのデータベース値を検索して保存する必要があります。データベース値は以下のコマンドで探せます:
SELECT value FROM auth_config WHERE field ='spentityid';
バックアップ作成後
2) 実稼働サイトをステージングにバックアップする場合、最良の方法はrsyncに/path/to/dataroot/certificate/および/path/to/dataroot/metadata/ディレクトリを無視させることです。それができない場合、バックアップされたファイルを元の場所にコピーする必要があります。
例:
cp /path/to/dataroot/certificate/server.crt.staging /path/to/dataroot/certificate/server.crt cp /path/to/dataroot/certificate/server.pem.staging /path/to/dataroot/certificate/server.pem
2a) そして、必要であればバックアップしたステージング/テストメタデータを元に戻してください。
UPDATE auth_config SET value = 'my_SP_value' WHERE field ='spentityid';
これでSAMLが再度動作するようになったはずです。
あなたがこれらのファイルおよびデータベース情報をバックアップしていない場合、「Admin -> Extensions -> SAML設定」(admin/extensions/pluginconfig.php?plugintype=auth&pluginname=saml) からステージング/テストサイトでSAML証明書を再度生成した後、「メタデータを表示する」の情報をアイデンティティプロバイダに再度提供する必要があります。