【SAML認証】SimpleSAMLphpを試す(インストール編)
SAML、SSO、うう頭が!SAML認証を試すべくSimpleSAMLphpを動かしみたい!
概要
今回の記事では、SAML認証を試すべくSimpleSAMLphpをインストールして、管理画面を表示するまでの手順を掲載する。
別の記事で、Google WorkspaceとMicrosoft EntraをIDPとしてSAML認証する予定なので、SimpleSAMLphpをSPとしてか動作させる設定も掲載する。
仕様書
環境
- Ubuntu 20.04.4 LTS
- Apache 2.4.41
- PHP 8.0.30
- SimpleSAMLphp 2.1.1
手順書
SimpleSAMLphpをUbuntuにインストールして動作を確認するまでの手順を「インストール編」と「SP設定編」の2部構成で掲載する。
インストール編
- SimpleSAMLphpの動作に必要なPHPのモジュールをインストールする。
sudo apt install php-intl php-json php-xml php-mbstring php-curl - SimpleSAMLphpをダウンロードして、任意の場所に配置する。この記事ではドキュメントルート内の
var/www/simplesamlphpに配置したとして話を続ける。
私はtar.gzをダウンロードして展開した後にアップロードしたんだけども、GitHubからpullしてもいい。
-
Apacheの設定ファイルを下記のような感じに修正する。
<IfModule mod_ssl.c> <VirtualHost *:443> ... SetEnv SIMPLESAMLPHP_CONFIG_DIR /var/www/simplesamlphp/config <Directory /var/www/simplesamlphp/public> Require all granted </Directory> </VirtualHost> </IfModule>この設定だとSimpleSAMLphpのURLは
example.com/simplesamlphp/publicみたいな感じになる。example.com/simplesamlようにエイリアスしたい場合は下記のようにする。<IfModule mod_ssl.c> <VirtualHost *:443> ... SetEnv SIMPLESAMLPHP_CONFIG_DIR /var/www/simplesamlphp/config Alias /simplesaml /var/www/simplesamlphp/public <Directory /var/www/simplesamlphp/public> Require all granted </Directory> </VirtualHost> </IfModule> - ここからSimpleSAMLphpの設定ファイルを編集する。
/var/www/simplesamlphp/config.php.distをコピーして/var/www/simplesamlphp/config.phpを作る。
34行付近の'baseurlpath'を下記のような感じに修正する。'baseurlpath' => 'https://example.com/simplesamlphp/public/',エイリアスを使ってる場合は
'baseurlpath' => 'https://example.com/simplesaml/', - 175行付近の'timezone'を
Asia/Tokyoにする。設定できるタイムゾーンはこのページを参照。'timezone' => 'Asia/Tokyo', - 190行付近の
secretsaltにソルトになるランダムな文字列を入力する。'secretsalt' => 'xxxxxxxxxxxxxxxxxxxxxx',設定ファイルのコメントにあるんだけども、下記のコマンドでランダムな文字列を出力できる。
LC_ALL=C tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | dd bs=32 count=1 2>/dev/null;echo - 198行付近の'auth.adminpassword'に管理画面に入るときに使うパスワードを設定する。
'auth.adminpassword' => 'dnk087elmc7riohmp954xddd1fo4ku6p',/var/www/simplesamlphp/config.phpの設定は以上。 - ApacheがSimpleSAMLphpをインストールしたパスにアクセスできるようにする。
chown -R www-data:www-data /var/www/simplesamlphp/ - Apacheを再起動する。
sudo systemctl restart apache2 - ここまでの設定でSimpleSAMLphpにブラウザでアクセスできるようになった。トップページは
https://example.com/simplesamlphp/public/、管理画面はhttps://example.com/simplesamlphp/public/module.php/adminのような感じでアクセスできる。
トップページはこんな感じで
管理画面はこんな感じ。
config.phpのauth.adminpasswordで設定したパスワードでログインすると
SimpleSAMLphpの状態が表示される。
Your PHP installationのセクションでPHPで必要な拡張機能がインストールされてるか確認できる。requiredとなってる項目は必須なのでもしインストールされない項目があったらインストールしておく。
SP設定編
- 別の記事でSimpleSAMLphpをSPとして使う内容を掲載する予定なのでSP用の証明書を作っておく。
cd /var/www/simplesamlphp/cert/ sudo openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out server.crt -keyout server.pem -subj "/CN=sp.local"/var/www/simplesamlphp/cert/の中にserver.pemとserver.crtが作られてればOKだ! -
/var/www/simplesamlphp/authsources.php.distをコピーして/var/www/simplesamlphp/authsources.phpを作る。
26行付近のdefault-spを下記のような感じに修正する。'default-sp' => [ 'saml:SP', 'privatekey' => 'server.pem', 'certificate' => 'server.crt', // The entity ID of this SP. 'entityID' => 'https://example.com/simplesamlphp/public/', ... ],'entityID'の値を例ではURLにしてるんだけども、ユニークな文字列であればURL形式でなくとも何でもいい。
まとめ(感想文)
次回?Google WorkspaceとMicrosoft EntraをIDPにしてSAML認証してみる記事を掲載するのでしばし待たれよ!



