#author("2019-02-28T08:08:56+09:00","","")
(リリース前の PukiWiki 1.5.2 に含まれる機能の説明です)
#author("2019-03-01T08:02:11+09:00","default:webadmin","webadmin")
* SAML認証 [#abd7594a]

#contents

SAMLとは、
Security Assertion Markup Language の略で、認証サーバー(IdP)とサービス提供サーバー(SP)間で認証を行ったユーザー情報を交換するための仕組みです。

パスワードなどの秘匿情報はユーザーとIdPの間でやり取りを行い、IdPからSPには「認証済みである」ことを通知することで、ユーザーがSPのサービスを利用できるようにします。

PukiWiki では $auth_type に AUTH_TYPE_SAML を指定することで SAML認証を利用できます。

SAML IdP (認証サーバー)と連携して、Single Sign Onシステムを実現します。

** 導入手順 [#u056fd06]

*** 1. Composer による onelogin/php-saml の導入 [#composer]

https://getcomposer.org/download/ から最新の composer.phar を確認して、ダウンロードする。その後 onelogin/php-saml をインストールする

 # wget  -O ~/composer.phar 'https://getcomposer.org/download/1.8.4/composer.phar'
 # cd /var/www/html/pukiwiki # index.php がある、pukiwiki のルートディレクトリ
 # php ~/composer.phar require onelogin/php-saml

(環境によっては composer.phar の実行時オプションが必要な場合もあります)
 $ php -d open_basedir=~:$PWD:/ -d allow_url_fopen=1 ~/composer.phar require onelogin/php-saml # osdn.jp で動いた設定

*** 2. SAML IdPを設定する [#idp]

SAML IdP (ID Provider) の設定 (PukiWikiサイトをSPとして登録) をします。

Okta Developer ( https://developer.okta.com/ ) 等で、テスト用のIdPを構築できます。 

*** 3. SAML設定ファイル saml_settings.php を作成する [#spsetting]

設定値の詳細は https://github.com/onelogin/php-saml#settings を参照してください。

/saml_settings:
 <?php
 
    $spBaseUrl = 'https://pukiwiki.example.com/wiki';
    $settingsInfo = array (
        'sp' => array (
            'entityId' => $spBaseUrl.'/?//cmd.saml//metadata',
            'assertionConsumerService' => array (
                'url' => $spBaseUrl.'/?//cmd.saml//acs',
            ),
            'singleLogoutService' => array (
                'url' => $spBaseUrl.'/?//cmd.saml//sls',
                'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
            ),
            'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:emailAddress',
            'x509cert' => '-----BEGIN CERTIFICATE-----
 MIIDIDCCAggCCQCpTIwIDI6hSDANBgkqhkiG9w0BAQsFADBSMQswCQYDVQQGEwJK
 ...
 /n1Uap4WMcupRZ/nn6mW4rYzpuSTgn4W1irjT8m4f5dtzxD68q9MYewx2lP1G1zp
 1e1eBsOZFRK49crMnc+i7vvCSRmzFb2PLYyA7SLGzipyVx2d
 -----END CERTIFICATE-----',
            'privateKey' => '-----BEGIN RSA PRIVATE KEY-----
 MIIEowIBAAKCAQEAv+K1mmUoK5+UrVQOiGTc4jcOzTbPFFzzhJ0nsDt2kK0QpBh4
 ...
 K3wQlvT0GsWJc1cKO6LGy/mCUNr2uK4md3Es3UHVgOX2Sk8P3SE9pqCsIa9Upudq
 DCgoysvudJRA7gzQjvjh0VDoDsu2/pNKuvSgMuF2DBvKeE8GuAoT
 -----END RSA PRIVATE KEY-----',
        ),
        'idp' => array (
            'entityId' => 'http://saml-idp.example.com/********',
            'singleSignOnService' => array (
                'url' => 'https://idp.example.com/app/****************/sso/saml',
            ),
            'singleLogoutService' => array (
                'url' => '',
            ),
            'x509cert' => '-----BEGIN CERTIFICATE-----
 MIIDpDCCAoygAwIBAgIGAVzp9gSBMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEG
 ...
 GOGVaCgpdT3r+gc6SvKRLHjHecYmqh/64/wmhV4ycT9GpzpWo46QQ4WCjzgKpXYB9M9I3wAubFpP
 1C5NzX/RCWNnSg/A1W41IA8zQRU423l2
 -----END CERTIFICATE-----',
        ),
    );

* コメント [#p68a6b60]
----

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.067 sec.

SourceForge