WordPressには非常に様々なプラグインがある。全体の割合としては少ないがログインにかかわるものもそれなりにたくさんある。
今回はその中から最近興味を持った「WP SAML Auth」を紹介する。
このプラグインはWebsite Management Platformを扱うアメリカの会社である「Pantheon」が作ったもので、名前の通りWordPressをSAMLによる認証におけるSP(サービスプロバイダ)にできるというプラグインだ。
SAMLでの認証といえば、弊社のPassLogicも対応している。そこで、このプラグインを用いてPassLogicによるトークンレス・ワンタイムパスワードでWordPressにログインしてみた。
このプラグインは設定がやや難しい(WebGuiが存在しない、SimpleSAMLphpの設定も必要)が、Pantheon公式のマニュアルを参考に最低限動作する環境を作ってみた。
手順としては以下のようになる。
- SimpleSAMLphpの導入
- 「WP SAML Auth」の設定(SimpleSAMLphpのパスの指定)
- PassLogicの設定
- SimpleSAMLphpの設定(PassLogicをIDPに設定)
1.SimpleSAMLphpの導入
まず、SimpleSAMLphpをダウンロードする。
最新版で問題ないだろう。
WordPressが動作しているサーバの使いやすい場所に解凍する。
解凍したフォルダ内のwwwフォルダをApacheから見えるように設定する。シンボリックリンクでもVirtualHostでもお好みで。今回はシンボリックリンクで試してみた。
config > config.phpを書き換える。
'auth.adminpassword' => '123',
とあるので、管理者パスワードを書き換える。初期パスワードのままだとログインさせてくれない。
実際に運用するなら、この上にある’secretsalt’や’technicalcontact_email’等、手を加える必要のある項目はまだまだありそうだ。この記事では動く状況まで持っていくことを優先する。
これで、SimpleSAMLphpの管理画面へアクセスできる状態になったはずだ。
さらにもう1か所、同ファイルの中盤の
'enable.saml20-idp' => true,
'enable.shib13-idp' => false,
'enable.adfs-idp' => false,
'enable.wsfed-sp' => false,
'enable.authmemcookie' => false,
この’enable.saml20-idp’はtrueにしておく。
2.「WP SAML Auth」の設定(SimpleSAMLphpのパスの指定)
次にWordPressに「WP SAML Auth」をインストールし有効化する。
先述の通りこのプラグインは設定画面を持っていないので、ソースコード上に書き加える他ない。
使用中のテーマ内のfunction.phpファイルに以下の記述を追加する。
add_filter( 'wp_saml_auth_option', function( $value, $option ){
if ( 'simplesamlphp_autoload' === $option ) {
$value = ' {SimpleSAMLphpの解凍先} . /lib/_autoload.php';
}
return $value;
}, 10, 2 );
プラグインにSimpleSAMLphpの場所を指定してやればいいようだ。このプラグインではデータベースへのオプション設定の登録も行われないが、代わりにオプション取得時の関数にfilterがセットされている。
また、初期状態だとSimpleSAMLphpにおける’default-sp’を認証に用いる設定になっている。
今回はこの設定はそのままにして、SimpleSAMLphpの’default-sp’の内容をPassLogicでの認証に置き換える。
3.PassLogicの設定
管理者でログインし、Cloud > SP登録 からSimpleSAMLphpの情報を登録する。
設定内容は…