【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認証してみる記事を掲載するのでしばし待たれよ!