Secioss Identity Suite Cloud Edition SP(以降Identity Suite Cloud)は、SeciossLinkとSAML未対応のシステムとの間でシングルサインオンやID同期を行うためのソフトウェアです。
Identity Suite Cloudは、オープンソースとしてGPLライセンスにより公開しています。
Identity Suite Cloudの推奨環境は以下になります。
今回のインストール環境としては、LinuxのCentOS 5を想定しています。rpmのリポジトリにEPEL5を追加して下さい。
Windowsサーバへのインストールについては、「Secioss Identity Suite Cloud Edition SP Windows環境への導入」をご覧ください。
# yum install perl-XML-LibXML
# yum install perl-XML-Simple
# yum install perl-TimeDate
# yum install perl-Class-Inspector
# yum isntall perl-Text-CSV_XS
# yum install php-pear
# yum install php-xml
# yum install php-soap
# yum install xorg-x11-server-Xvfb
# yum install firefox
http://sourceforge.jp/projects/secioss-auth/releases/からsecioss-idsuite-cloud-sp-3.3.x.tgzをダウンロードして下さい。
secioss-idsuite-cloud-spパッケージをインストールします。
# unzip secioss-idsuite-cloud-sp-3.3.x.zip
# cd secioss-idsuite-cloud-sp-3.3.x
# cp -r opt /
# rpm -Uvh rpm/ruby-2.0.0-p481-1.x86_64.rpm # OSが64bitの場合
# gem isntall selenium-webdriver
# gem install fuubar
シングルサインオンとID同期のログは、それぞれsyslogのlocal5、local4に出力します。 /etc/syslog.confに以下の設定を追記して、syslogデーモンを再起動して下さい。
local5.* -/var/log/auth.log
local4.* -/var/log/lism.log
シングルサインオンを行うシステムのサーバ上にIdentity Suite Cloudを導入する方式です。
シングルサインオンを行うシステム毎にIdentity Suite Cloudをインストールする必要がありますが、リバースプロキシサーバを別途用意する必要がありません。
代理認証の設定に必要なシステムにログインする際の通信データを取得します。
Firefoxに”Live HTTP Headers”をインストールしてから起動し、シングルサインオン対象のシステムにログインを行って下さい。
取得した通信データは、Live HTTP Headersの”すべてを保存”ボタンを押下して、ファイルに出力して下さい。
シングルサインオンの設定を行うには、以下のスクリプトを実行して下さい。
# ./config.sh sso
スクリプトを実行すると、カレントディレクトリにSAMLのメターデータ”metadata.xml”が生成されます。”metadata.xml”は、”2.1.3 SeciossLinkの設定”で必要になります。
次にSAML認証用の秘密鍵と公開鍵を作成します。 以下はOpenSSLによる秘密鍵と公開鍵の作成手順です。
秘密鍵を作成します。
# cd /etc/pki/tls/certs
# make test.key
秘密鍵からパスワードを削除します。
# openssl rsa -in test.key -out test.key
公開鍵を作成します。
# make test.crt
Country Name (2 letter code) [GB]:JP← 国名
State or Province Name (full name) [Berkshire]:Tokyo← 都道府県名
Locality Name (eg, city) [Newbury]:Bunkyo← 市区町村名
Organization Name (eg, company) [My Company Ltd]:TEST, Inc← 会社名
Organizational Unit Name (eg, section) []:← 空
ENTER Common Name (eg, your name or your server’s hostname) []:sp.test.co.jp← ホスト名
Email Address []:admin@test.co.jp← 管理者メールアドレス
作成した公開鍵は、”/opt/secioss/share/simplesamlphp/cert/PublicKey.pem”にコピーして下さい。
秘密鍵は、”/opt/secioss/share/simplesamlphp/cert/PrivateKey.pem”にコピーして、所有者をapacheに設定して下さい。
# chown apache /opt/secioss/share/simplesamlphp/cert/PrivateKey.pem
最後にApacheを再起動して下さい。
# /etc/init.d/httpd restart
SeciossLinkの管理画面(https://slink.secioss.com/tenantadmin/、開発環境を使用している場合は、https://slinkdev.secioss.net/tenantadmin/)にアクセスして、管理者アカウントでログインします。
画面上部の”シングルサインオン”をクリックしから、左側メニューの”SAML サービスプロバイダ”をクリックして下さい。
”新規登録”をクリックして、SPの設定を登録します。
”2.1.2 Identity Suite Cloudの設定”で生成されたメタデータ”metadata.xml”を読み込んでから、各項目に値を設定して下さい。
Identity Suite Cloudを導入したリバースプロキシサーバを構築し、シングルサインオンを行う各システムにはリバースプロキシサーバ経由でアクセスを行う方式です。
シングルサインオンを行うシステム毎にIdentity Suite Cloudをインストールする必要がなく、各システムへのシングルサインオン設定をSeciossLinkの管理画面から行うことができます。
シングルサインオンの設定を行うには、以下のスクリプトを実行して下さい。
# ./config.sh rp-dl setup
次にSAML認証用の秘密鍵と公開鍵を作成します。 以下はOpenSSLによる秘密鍵と公開鍵の作成手順です。
秘密鍵を作成します。
# cd /etc/pki/tls/certs
# make test.key
秘密鍵からパスワードを削除します。
# openssl rsa -in test.key -out test.key
公開鍵を作成します。
# make test.crt
Country Name (2 letter code) [GB]:JP← 国名
State or Province Name (full name) [Berkshire]:Tokyo← 都道府県名
Locality Name (eg, city) [Newbury]:Bunkyo← 市区町村名
Organization Name (eg, company) [My Company Ltd]:TEST, Inc← 会社名
Organizational Unit Name (eg, section) []:← 空
ENTER Common Name (eg, your name or your server’s hostname) []:sp.test.co.jp← ホスト名
Email Address []:admin@test.co.jp← 管理者メールアドレス
作成した公開鍵は、”/opt/secioss/share/simplesamlphp/cert/PublicKey.pem”にコピーして下さい。
秘密鍵は、”/opt/secioss/share/simplesamlphp/cert/PrivateKey.pem”にコピーして、所有者をapacheに設定して下さい。
# chown apache /opt/secioss/share/simplesamlphp/cert/PrivateKey.pem
最後にSeciossLinkで行ったシングルサインオンの設定を反映する以下のスクリプトをcronに登録して下さい。すぐに設定を反映させたい場合は以下のスクリプトを直接実行して下さい。
/opt/secioss/sbin/updaterpconf.sh
SeciossLinkの管理画面(https://slink.secioss.com/tenantadmin/、開発環境を使用している場合は、https://slinkdev.secioss.net/tenantadmin/)にアクセスして、管理者アカウントでログインします。
画面上部の”システム”をクリックしから、左側メニューの”テナント情報”をクリックして下さい。
”リバースプロキシサーバのホスト名”にリバースプロキシサーバのホスト名、IPアドレス(グローバルアドレス、カンマ区切りで複数登録可能)と”2.2.1 Identity Suite Cloudの設定”で作成した公開鍵を登録して下さい。
次にシングルサインオンを行うシステム(アプリケーション)の設定を行います。
画面上部の”シングルサインオン”をクリックしから、左側メニューの”リバースプロキシ”をクリックして下さい。
”新規登録”をクリックして、アプリケーションの設定を登録します。
ID同期を行うには、対象のシステムにCSVファイルからユーザをインポートする機能が必要です。
CSVファイルをシステムにインポートするためのシナリオファイルを作成します。
Firefoxに”Selenium IDE”をインストールしてから起動し、システムにログインしてCSVのインポートを行って下さい。
Selenium IDEの”ファイル”->”テストケースをエクスポート”->”Ruby / RSpec / WebDriver”から、シナリオファイルを生成します。
シナリオファイル内のインポートしたファイルの名前を”/opt/secioss/var/lib/csv/user.csv”に変更し、”${receiver}”という箇所がある場合は”@driver”に全て置き換えて下さい。シナリオファイルは、”/opt/secioss/etc/importCSV.rb”というファイル名で配置して下さい。
次に、seleniumをコマンドラインから実行できるようにするため、Xvfbを起動して下さい。
# Xvfb :10 -screen 0 1024x768x24 -ac &
次に、システムにインポートするCSVファイルのフォーマットを、以下の例のようにデータ項目を順番に記述して、”/opt/secioss/etc/header.csv”として保存して下さい。header.csvの文字コードはBOM無のUTF-8にして下さい。
ユーザID,姓,名,パスワード,メールアドレス,...
設定できるデータ項目は以下になります。
Identity Suite Cloudは、定期的にSeciosLinkから更新データを取得し、更新データをCSVファイルにしてシステムにインポートします。
最初に、以下のスクリプトを実行して下さい。
# ./config.sh idm
Identity Suite Cloudの代理認証機能が正常に動作するか確認します。
“<アプリケーションのURL>/sso/altest.php?sso_app=sp&user=<ユーザID>&pass=<パスワード>”にアクセスして、システムにログインできることを確認して下さい。
ログインできない場合は”5.1 代理認証”を参考に、”/opt/secioss/var/www/conf/sp.ini”の設定を調整して下さい。
代理認証が正常に動作することを確認したら、”<アプリケーションのURL>/sso/autologin.php?sso_app=sp”にアクセスして、シングルサインオンすることを確認して下さい。
SSOポータル(https://slink.secioss.com/user/?tenant=<テナントID>)にアクセスし、アプリケーションのアイコンをクリックして、シングルサインオンできることを確認して下さい。
seleniumのシナリオファイルが正常に動作するか確認します。
Identity Suite Cloudを導入したサーバにX Windowのログイン画面からログインして下さい。
以下のコマンドを実行して、seleniumのシナリオファイルが正常に動作するか確認して下さい。
# /opt/secioss/sbin/idsync.sh
インポートされたデータは以下のCSVファイルとして出力されます。
/opt/secioss/var/lib/csv/user-<日時>.csv.finished
再度、同じCSVファイルのインポートを実行したい場合は、user-<日時>.csv.finishedをuser-<日時>.csvにリネームしてから、idsync.shを実行して下さい。
正常にID同期が行われることを確認できたら、cronに1時間に1回 “/opt/secioss/sbin/idsync.sh”を実行するように設定して下さい。
url | login | ログインするアプリケーションのURL |
back | ログイン後に表示する画面のURL | |
fatal | エラー発生時に表示する画面のURL | |
password | アプリケーションにPOSTするパスワードが存在しない、まはた間違っている場合に表示する画面のURL | |
postName | username | ログイン時にPOSTするユーザ名の変数名 |
password | ログイン時にPOSTするパスワードの変数名 | |
content | check | アプリケーションから返されたコンテンツが指定した正規表現に一致した場合、認証成功と判断します。 |
authfail | アプリケーションから返されたコンテンツが指定した正規表現に一致した場合、認証失敗と判断します。このとき、passwordで指定したURLにリダイレクトします。 |
[url]
login = “http://sp.example.com/aipo/”
back = “http://sp.example.com/aipo/”
fatal = “http://sp.example.com/aipo/”
password = “http://sp.example.com/aipo/”
[postName]
username = username
password = password
ユーザID,パスワード,姓,名,姓(かな),名(かな),メールアドレス,電話番号,,携帯電話番号,,部署,役職