SimpleSAMLphpでSAMLのSPを作る

【6/19開催】Kong Community Japan Meetup #4
本イベントでは、Kong Inc. のVP of ProductであるReza Shafii氏もプレゼンターとして参加。当社からはアーキテクト マネージャーの槌野の登壇が決定!参加無料です!!

【6/21開催】開発者目線でのSBOMとの向き合い方
SBOMの導入から開発者がSBOMの作成・管理を自動で行っていくための方法(デモ)を紹介します。

【7/5開催】azd+Terraform? ~ポイントを押えてAzure上へのアプリケーション環境をラクチン構築~
ツールの概要説明から、実際の開発におけるポイントをお伝えします!

【7/19開催】現場で役立つAzure神小技10+α 〜生成AI,RAG,コスト削減など旬な技術満載のLT大会〜
Azureの最新技術や実用的な小技を紹介する特別なライトニングトーク大会を開催します!

【7/26開催】最適なIaCツールを選ぼう
プロジェクトでのツール選びに困らないための重要な観点をご説明します!

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

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参照)にアクセスします。

https://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/httpsd/conf.d/simplesamlphp.confを以下の内容で作成します。

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

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

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

アバター画像
About 武井 宜行 271 Articles
Microsoft MVP for Azure🌟「最新の技術を楽しくわかりやすく」をモットーにブログtech-lab.sios.jp)で情報を発信🎤得意分野はAzureによるクラウドネイティブな開発(Javaなど)💻「世界一わかりみの深いクラウドネイティブ on Azure」の動画を配信中📹 https://t.co/OMaJYb3pRN
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる