【SimpleSAMLphp】セッション管理にMySQLを使う
SimpleSAMLphpでセッション管理にMySQLを使いたい!
概要
今回の記事では、SimpleSAMLphpでセッション管理にMySQLを使う手順を掲載する。
仕様書
環境
- Ubuntu 20.04.4 LTS
- Apache 2.4.41
- PHP 8.0.30
- SimpleSAMLphp 2.1.1
手順書
SimpleSAMLphpではデフォルトでPHP sessionを使ってセッションが管理されるんだけども、環境によってはPHP sessionではうまくSimpleSAMLphpが稼働しないことがあるらしい。その場合、別の方法、今回の場合はデータベースを使うと改善するそうなので、MySQLを使ってSimpleSAMLphpのセッションを管理する手順を掲載する。
/var/www/simplesamlphp/config.php
の1199行付近にあるstore.type
の値をsql
に修正する。
'store.type' => 'sql',
1207行付近にあるstore.sql.dsn
の値に下記のような感じでデータベースのホスト名とデータベース名を入力する。データベースが同サーバー(localhost
)にあって、データベース名がsimplesamlphp_db
である例。
'store.sql.dsn' => 'mysql:host=localhost;dbname=simplesamlphp_db',
1212~1213行付近にあるstore.sql.username
にデータベース接続に使うユーザー名を、store.sql.password
にそのパスワードを入力する。
'store.sql.username' => '<user_name>',
'store.sql.password' => '<password>',
SimpleSAMLphpを複数インストールして同じデータベースでセッションを管理する予定がある場合は、1218行付近にあるstore.sql.prefix
にテーブル名のプレフィックスに使う文字列を入力する。
'store.sql.prefix' => 'SimpleSAMLphp',
/var/www/simplesamlphp/config.php
の設定は以上。
んで、テーブルはSimpleSAMLphpが勝手に作ってくれるんだけども、データベースを事前に用意する必要がある。ターミナルやphpmyadminなどから下記のクエリを実行して、データベースを作成しておく。
CREATE DATABASE simplesamlphp_db;
これでSimpleSAMLphpのセッション管理がMySQLでされるようになる。
まとめ(感想文)
私の環境ではPHP sessionで正常にSimpleSAMLphpが稼働したんだけども、SAML認証に失敗してた時にいろいろ試してて、そのいろいろ試したののひとつがデータベースによるセッションの管理だったっていう。