SimpleSAMLphpでSAMLのSPを作る

こんにちは。サイオステクノロジー技術部 武井です。

SAMLに対応したIdPをいじっていると、テスト用のSAML SPが欲しくなるときがあります。

そんなときサクッとSAML SP作れるのがSimpleSAMLphpです。SimpleSAMLphpによるSAML SPの作り方をここにメモっておきます。

PHPやApacheはインストールされていることを前提とします。

XMLのパーサーをインストールします。

# yum install php-xml

simplesamlphpを以下URLよりダウンロードします。

https://simplesamlphp.org/download

解凍します。

# tar xzvf simplesamlphp-1.14.5.tar.gz

とりあえず/var配下にコピーします。

# cp -r simplesamlphp-1.14.5 /var/simplesamlephp

SPの情報を設定します。/var/simplesamlphp/config/authsources.phpを以下のように修正します。

    'default-sp' => array(
        'saml:SP',
        'RelayState' => 'https://sp.hogehoge.com/testsp.php', // これを追加
        // The entity ID of this SP.
        // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL.
        'entityID' => 'https://sp.hogehoge.com/', // これをnullから変更
        // The entity ID of the IdP this should SP should contact.
        // Can be NULL/unset, in which case the user will be shown a list of available IdPs.
        'idp' => 'https://idp.hogehoge.net/', // これをnullから変更

RelayStateはIdPで認証後に遷移するSPのURLです。entiryIDはSPのエンティティIDです。idpはIdPのエンティティIDです。

IdPのメタデータを作成します。simplesamlphpでは管理画面にて、IdPのメタデータをsimplesamlphp用のメタデータ形式に変換してあげる必要があります。

管理画面にアクセスするための、管理画面のパスワードを設定します。/var/simplesamlphp/config/config.phpを以下のように変更します。

    'auth.adminpassword' => 'XXXXXX',  // 初期値123から他のパスワードに変更

次にsimplesamlphpの管理画面(以下URL参照)にアクセスします。

http://simplesamlphpのホスト名/simplesaml


「連携」をクリックします。


「XML を SimpleSAMLphpメタデータに変換」をクリックします。


以下のいずれかの方法でIdPのメタデータをアップロードして下さい。
– 「XMLメタデータ」の下のテキストボックスにIdPのメタデータを貼り付けて「パース」をクリックする
– 「ファイルを選択」をクリックして、IdPのメタデータを選択し、「パース」をクリックする


変換結果が上記のように表示されます。「saml20-idp-remote」に表示されている内容をコピーして下さい。

/var/simplesamlphp/metadata/saml20-idp-remote.phpの末尾に、先ほどコピーした内容を貼り付けて保存します。

以上でSPの設定は終了です。

次は、SPのアプリを作成します。ApacheのDocument Rootが/var/www/htmlとします。/var/www/html/sp.phpを以下の内容で作成します。

<?php
require_once('/var/simplesamlphp/lib/_autoload.php');

$as = new SimpleSAML_Auth_Simple('default-sp');

$as->requireAuth();

echo("SPだよ");
?>

Apacheの設定を変更します。/etc/httpd/conf.d/simplesamlphp.confを以下の内容で作成します。

SetEnv SIMPLESAMLPHP_CONFIG_DIR /var/simplesamlphp/config
Alias /simplesaml /var/simplesamlphp/www

設定変更後、Apacheを再起動します。

上記のSPにアクセスすると、IdPにリダイレクトされて、認証が通れば、RelayStateで設定したURLにリダイレクトされるはずです。

Be the first to comment

コメント投稿

Your email address will not be published.


*