LoginSignup
2
0

More than 5 years have passed since last update.

SimpleSAMLphpのデータソースにMySQLを指定する

Posted at

概要

開発環境にSAML2.0方式によるシングルサインオンを構築するにあたり(IDプロバイダー用途で)SimpleSAMLphp を使う場合のユーザー認証データソースとして、MySQLなどのRDBMSを指定する方法を調べてみました。

※ちなみにデフォルトのデータソースは、config/authsources.php の'example-userpass'の部分で、PHP連想配列で「ユーザ名:パスワード」を定義するぽいです。

SimpleSAMLphpのバージョン
$ grep 'function getVersion' -i -A3 lib/SimpleSAML/Configuration.php
    public function getVersion()
    {
        return '1.17.1';
    }

対応手順

1. sqlauthモジュールを有効化する。

config/config.php
'module.enable' => [
    'sqlauth' => true,
],

2. データベース接続情報を設定する。

※自分の環境に合わせて、'dsn' や 'query' なども変更する。

config/authsources.php
    'example-sql' => [
        'sqlauth:SQL',
        'dsn' => 'mysql:host=sql.example.org;port=3306;charset=utf8;dbname=simplesaml',
        'username' => 'simplesaml',
        'password' => 'secretpassword',
        'query' => 'SELECT uid, givenName, email, eduPersonPrincipalName FROM users WHERE uid = :username AND password = SHA2(CONCAT((SELECT salt FROM users WHERE uid = :username), :password), 256);',
    ],

3. IdPが参照する認証データソースを変更する

metadata/saml20-idp-hosted.php
//    'auth' => 'example-userpass',
    'auth' => 'example-sql',

そのた

※ちなみに最初の手順1で 'sqlauth' => true を設定し忘れると、下記エラーが発生するぽい。

SimpleSAML\Error\Error: UNHANDLEDEXCEPTION

Backtrace:
1 www/_include.php:17 (SimpleSAML_exception_handler)
0 [builtin] (N/A)
Caused by: Exception: Could not resolve 'sqlauth:SQL': no class named 'SimpleSAML\Module\sqlauth\Auth\Source\SQL' or 'sspmod_sqlauth_Auth_Source_SQL'.
Backtrace:
6 lib/SimpleSAML/Module.php:404 (SimpleSAML\Module::resolveClass)
5 lib/SimpleSAML/Auth/Source.php:318 (SimpleSAML\Auth\Source::parseAuthSource)
4 lib/SimpleSAML/Auth/Source.php:363 (SimpleSAML\Auth\Source::getById)
3 lib/SimpleSAML/Auth/Simple.php:216 (SimpleSAML\Auth\Simple::logout)
2 modules/core/www/authenticate.php:17 (require)
1 lib/SimpleSAML/Module.php:236 (SimpleSAML\Module::process)
0 www/module.php:9 (N/A)

参考

SimpleSAMLphpのインストール自体は下記ページを参考にしました。

2
0
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
0