CentOS 8上にSimpleSAMLphpを使ってSAML SPを構築する。
RHEL8がリリースされてもうすぐ1年です。皆さんRHEL8に触る機会が増えてきているのではないでしょうか。
RHEL8ではいくつかの大きな変更が入っており、今まで慣れ親しんだyumだdnf(ダンディファイド ヤム)に変わったりもしました。
しかし弊社技術者として最も大きな変更はOpenLDAP Serverが同梱されなくなり Red Hat Directory Server が標準Directoryサーバーに変わったことです。
このトピックも今後ブログで書いていきたいと思います。
今回はCentOS 8上にSimpleSAMLphpを使って SAML SPを作ってみたいと思います。
・CentOS 8.1のインストールと初期構築が完了していること
・SeciossLinkへテナント構築が完了していること(評価版でもOK)
※ 本稿では使用する SeciossLink のテナントは example.com です。
・SimpleSAMLphpはバージョン 1.18.4 を使用します。
・SAML SPのホスト名は samltest8.int.secioss.work としています。
SimpleSAMLphp を動作させるのに必要なパッケージをインストールします。
# dnf install httpd |
SimpleSAMLphpのホームページからパッケージをダウンロードしてインストールします。
# curl -o simplesamlphp.tgz -L https://simplesamlphp.org/download?latest |
SimpleSAMLphpの管理者ユーザーのパスワードを設定します。
auth.adminpassword を変更して任意のパスワードに変更してください。
enable.saml20-idp を変更してSAML2を有効化します。
# vi /var/www/simplesamlphp/config/config.php |
'auth.adminpassword' => '123', |
httpdにSimpleSAMLphp用の設定ファイルを追加します。
# vi /etc/httpd/conf.d/simplesamlphp.conf |
Alias /simplesaml /var/www/simplesamlphp/www |
httpdを起動します。
# systemctl start httpd |
ファイアーウォールでhttpsアクセスが許可されていない場合は許可してください。
firewall-cmd --permanent --zone=public --add-service=https |
RHEL8になってファイアーウォールの実装がiptablesからnftablesに変わりましたが、firewalld のバックエンドとして動いているので設定方法は今まで通りです。
動作確認をしてみましょう。
正しく設定できていれば以下のような画面が表示されます。
https://samltest8.int.secioss.work/simplesaml/
SeciossLinkの管理画面にログインし、SAML SPの新規登録を行います。
項目名 |
設定値 |
サービスID | simplesaml8 ※任意の値でOK |
サービス名 | simplesaml8 ※任意の値でOK |
エンティティID | https://samltest8.int.secioss.work/simplesaml/ ※SAML SPのエンティティIDです。任意の値でOK。後で使います。 |
Assertion Consumer Service | https://samltest8.int.secioss.work/simplesaml/module.php/saml/sp/saml2-acs.php/slink-sp ※URL最後の slink-sp は任意の値でPLですが、後で使います。 |
ログアウトURL | https://samltest8.int.secioss.work/simplesaml/module.php/saml/sp/saml2-logout.php/slink-sp ※RL最後の slink-sp は >Assertion Consumer Service で指定したものと同じものを指定してください。 |
デフォルトRelayState | ※IdP-Initiatedで認証した場合にリダイレクトするURLです。今回はSP-Initiatedなので空白を指定します。 |
アクセス先URL | https://samltest8.int.secioss.work/ ※テスト用のサンプルページのURLを設定する。 |
IDの属性 | urn:oasis:names:tc:SAML:2.0:nameid-format:persistent ※変更なし |
登録したSAML SPをユーザーに割り当てます。
SimpleSAMLphpにSAML IdPを追加します。
まず、SeciossLinkのメタデータをダウンロードします。
ブラウザなどで 下記URLにアクセスし、メタデータファイルをダウンロードしてください。
https://slink.secioss.com/saml/metadata.php?tenant=example.com
※最後のexample.comはテナントIDです。
SimpleSAMLphpの管理画面にログインし、SAMLメタデータの変換を行います。
ツールの「XML を SimpleSAMLphpメタデータに変換」をクリックします。
先ほどダウンロードしたSeciossLinkのメタデータをアップロードし、メタデータの変換を行います。
変換されたメタデータの内容を貼り付けます。
# vi /var/www/simplesamlphp/metadata/saml20-idp-remote.php |
$metadata['https://slink.secioss.com/example.com'] = array ( |
SAML IdPの設定を追加します。
# vi /var/www/simplesamlphp/config/authsources.php |
'slink-sp' => array( |
※"slink-sp" は 「Assertion Consumer Service」 で設定したURLの最後の部分です。
※"https://samltest8.int.secioss.work/simplesaml/" は「エンティティID」で設定した値を設定してください。
※"example.com" はテナントIDを指定してください。
テスト用ページの作成します。
# vi /var/www/html/index.php |
<?php |
ブラウザで下記URLにアクセスするとこんな感じに表示されます。
https://samltest8.int.secioss.work/
このようにCentOS 8でもSimpleSAMLphpを使って簡単にSAML対応のWebサイトを構築できます。
それではまた。