この記事は、次のような人にオススメです!
・LAMP環境の構築は済んでいる
・SAML認証(SSO)を簡単に実装してみたい
・SAML認証のOSSパッケージを探している
SAML認証の仕組みについては,以下の記事で解説しておりますので,そちらを参考にしていただければ幸いです.
SimpleSAMLphp とは
SimpleSAMLphpとは、PHPベースで作られているSAML認証のオープンソースパッケージです。以下に簡単ではありますが、SimpleSAMLphpの概要をまとめます。
| 言語 | PHP |
| ライセンス | LGPL-2.1 |
| 主な機能 | IdP、SP |
| その他の機能 | サードパーティモジュールを導入することで、追加可能。(OAuth、同意管理 等) |
名前の通り、IdP(アイデンティティ・プロバイダ)、SP(サービス・プロバイダ)によるSAML認証を簡単に実装することができます。
動作環境
PHPがベースになっていますので、標準的なLAMP環境であれば問題無く動作するかと思います。ただし、バージョン2系ではセキュリティが厳しくチェックされるようになったので、SSLがほぼ必須に近い状態です。認証基盤なので当然と言えば当然ですが、SSLが無ければ動作に支障が出る可能性があります。
当サイトでは、ローカル環境としてXAMPPの利用を前提とした解説を行います。(OpenSSLで自己署名証明書を発行し、https://localhost/にアクセスできることが前提になります。)
SimpleSAMLphpの導入
SimpleSAMLphpをローカル環境に導入する方法をご紹介します。
ダウンロード
SimpleSAMLphpの公式サイトからtar.gz圧縮ファイルをダウンロードします。トップに最新版のダウンロードリンクが掲載されていますので、特段の事情が無い限りはこちらをダウンロードすると良いでしょう。
各バージョン毎にサポート期間が定められています。サポート期間はこちらで確認できます。
ファイルの展開・移動
OSの標準機能(コマンド)または Lhaplus や7-Zip等の専用ソフトでtar.gzファイルを展開します。
XAMPPのhtdocsディレクトリに展開したファイルを移動してください。
configディレクトリとmetadataディレクトリにあるPHPファイルは、いずれも末尾に「.dist」が付加されていますので、これを一旦コピーしましょう。コピー先のファイルは、「config.php.dist」 -> 「config.php」の要領で末尾の「.dist」を外しておきましょう。
パスの設定
本来であればApacheの設定からパスを通すところですが、今回はローカル環境で取り敢えず動かすことが第一目標なので、簡単に設定する方法をご紹介します。
config > config.php ファイルの34行目付近にあるbaseurlpathを、下記の要領で変更してください。
下記の例では、htdocs > IdP > public > index.php の構成になっており、https://localhost/IdP/public/ でアクセスできる設定です。
- 'baseurlpath' => 'simplesaml/',
+ 'baseurlpath' => 'IdP/public/',config設定
管理者パスワードの変更
デフォルトでauth.adminpasswordが「123」に設定されています(200行目付近)が、このままでは「設定のパスワード(auth.adminpassword)は既定値から変更されていません設定ファイルを編集してください。」と表示され、管理画面にログインできないので適当に変更します。
シークレットソルトの変更
192行目付近のsecretsaltを変更しましょう。コメントの指示に従って、WSL等から以下のコマンドを実行します。
LC_ALL=C tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | dd bs=32 count=1 2>/dev/null;echo本番環境ではないので、WSL等のUNIX環境が無ければ代替手段でランダムな文字列を生成しても良いと思います。(デフォルトから1文字でも変更されていれば、Warningは出なくなります。)
トラブルシューティング
私がセットアップ時に遭遇したトラブルとその時に行ったトラブルシューティングを備忘録として載せておきます。同じエラーに遭遇された方は、解決の一助にされてください。
・バージョン:SimpleSAMLphp(2.2.2)
・エラー内容:未処理例外(Symfony コンポーネント関連)
【解決手順】
1) XAMPPのphp.iniからLDAPを有効化 (extension=ldap)
2)以下のコマンドを実行
composer require symfony/dependency-injection --with-all-dependenciesPHPの拡張モジュール不足と依存関係に問題があったようです。
管理画面
https://localhost/IdP/public/module.php/admin/(public以前のパスは、ご自身の環境に応じて適宜変更してください。)にアクセスし、先ほど変更した管理パスワードを入力し、管理画面にログインします。
以下の画面が表示されたら、ひとまずインストールと初期セットアップは成功です。



