【SimpleSAMLphp】セッション管理にMySQLを使う

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【SimpleSAMLphp】セッション管理にMySQLを使う

2023-12-18 | ,

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認証に失敗してた時にいろいろ試してて、そのいろいろ試したののひとつがデータベースによるセッションの管理だったっていう。