- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2018-03-29T05:12:29+09:00","","")
(リリース前の PukiWiki 1.5.2 に含まれる機能の説明です)
#author("2019-03-01T08:02:11+09:00","default:webadmin","webadmin")
* SAML認証 [#abd7594a]
AUTH_TYPE_SAML を指定することで SAML認証を利用できます。
#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