LoginSignup
2
1

More than 3 years have passed since last update.

SimpleSAMLphpを呼び出すとセッションが切り替わる!?

Last updated at Posted at 2020-04-25

はじめに

PHPでSimpleSAMLphpを使ってSAML認証を実装するときに、セッションでどはまりしちゃったので、
同じ犠牲者が出ないようにメモを残しておきます。

SimpleSAMLphpのセッションに切り替わる

自身でPHPのセッションを開始させ使っていても、
SimpleSAMLphpの処理を呼び出すと、
それ以降SimpleSAMLphpのセッションに勝手に切り替わります。

ここで厄介なのが、切り替わった後は自身で開始させたセッションが使えなくなってしまうってこと。

そこで、再度自身のセッションに切り替えるためのおまじないが
SimpleSAML_Session::getSessionFromRequest()->cleanup();
です!

Sample.php
session_start(); //自身でセッションを開始させる

$auth = new \SimpleSAML\Auth\Simple('default-sp'); //Simpleをインスタンス化
$auth->requireAuth(); //認証処理呼び出す → ここでSimpleSAMLphpのセッションに切り替わる

$_SESSION['key'] = 'value'; //自身のセッションは使えないのでエラーになる

SimpleSAML_Session::getSessionFromRequest()->cleanup(); //セッションを切り替えるおまじない

$_SESSION['key'] = 'value'; //今度はちゃんとvalueをセッションに保存できる

たった1行で解決できることに1日を費やしてしまった、、。

おわりに

このおまじないは以下ページで紹介されてますよ
SimpleSAMLphp SP API reference

SimpleSAMLphpは脆弱性があるって2019年にアナウンスされてたと思うので、使うときはそこらへん注意が必要かもです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1