イントラネットにあるwebサービスへSSOしてみよう-後編
schedule 2020/05/25 refresh 2023/11/09
こんにちは。セシオスサポートチームです。
「Secioss Identity Suite Cloud Edition SP」を使ったSSO 後編です。
前回記事でサンプルのwebアプリをデプロイしました。
前回記事:イントラネットにあるwebサービスへSSOしてみよう-前編
今回は IDSuiteSP の構築と、SeciossLink との連携設定を行って
実際にサンプルWebアプリへログインするところまでやってみたいと思います。
構築状況は以下を想定しています。適宜読み替えてください。
SSOを行いたいwebアプリのドメイン:https://testservlet.test.secioss.com
IDSuiteSPサーバーのドメイン:https://idsuitesp.test.secioss.com
ID Suite SP 構築編
IDSuiteSP ダウンロード
「Secioss Identity Suite Cloud Edition SP」をダウンロードします。
最新版は v4.0.3 です。
secioss-idsuite-cloud-sp-4.0.3.zip をダウンロードしたら
IDSuiteSPを構築するサーバーへscpなりftpなりで送って下さい。
※サンプルのwebアプリを構築したサーバーとは別のサーバーです。
必須パッケージのインストール
yum install epel-release
yum install -y httpd libmcrypt libmemcached memcached mod_ssl mod_proxy_html perl-Archive-Tar perl-CGI-Session perl-Class-Inspector perl-Config-General perl-Crypt-SSLeay perl-DBD-Pg perl-DBI perl-IO-Socket-SSL perl-LDAP perl-LWP-Protocol-https perl-Sys-Syslog perl-Text-CSV_XS perl-TimeDate perl-XML-LibXML perl-XML-Simple perl-XML-Twig php php-mbstring php-mcrypt php-pear php-pecl-memcache php-soap php-xml wget
解凍
unzip secioss-idsuite-cloud-sp-4.0.3.zip
IDSuiteSPに同梱されているファイルを適切なパスへ配置します。
cd secioss-idsuite-cloud-sp-4.0.3
cp -rf opt /
独自パッケージのインストール
IDSuiteSPに同梱されているパッケージをインストールします。
rpm -Uvh rpm/libmemcache-1.4.0-0.rc2.el7.centos.secioss.x86_64.rpm
rpm -Uvh rpm/apache2-mod_auth_memcookie-1.0.3-.el7.centos.secioss.x86_64.rpm
※依存関係の問題でインストールする順番は必ずlibmemcacheからインストールして下さい。
シングルサインオンのログは、それぞれsyslogのlocal5に出力します。
syslogの設定もやっておきましょう。
vi /etc/rsyslog.conf
下記記述をファイル末尾に追加してください。
# IdSuiteSP
local5.* -/var/log/auth.log
syslogを再起動します。
systemctl restart rsyslog
phpのセッション管理を memcached に変更する必要があるのでphpの設定を変えます。
変更対象のファイルですがデフォルトでは /etc 配下にあるphp.iniを変更します。
設定が反映されないなどの場合、設定ファイルの場所が違う可能性があります。
その場合はphpinfoなどで確認し環境に合わせ適宜変更して下さい。
vi /etc/php.ini
下記の設定を施します。
session.save_handler = memcache
デフォルトでsession.save_handlerの記述が存在していますので、ファイル内で検索し値を更新して下さい。
※2重にパラメータを定義しないよう注意です。
IDSuiteSPはSAML通信を行うソフトウェアですので、
SAML通信に使用する秘密鍵とX.509 証明書を作成します。
秘密鍵作成(RSA)
openssl genrsa -out PrivateKey.pem 2048
※パスフレーズはなしで作成します。
証明書作成
openssl req -new -x509 -days 3650 -key PrivateKey.pem -out PublicKey.pem
以下実行例
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP ←国
State or Province Name (full name) []:Tokyo ←都道府県
Locality Name (eg, city) [Default City]:Toshimaku ←市町村
Organization Name (eg, company) [Default Company Ltd]:TEST, Inc ←会社名
Organizational Unit Name (eg, section) []:Develop ←部署名
Common Name (eg, your name or your server's hostname) []:idsuitesp.test.secioss.com ←プロキシサーバー名
Email Address []: ←そのままENTER
鍵と証明書の作成が終わったら、以下のフォルダへ配置します。
cp ./PublicKey.pem /opt/secioss/share/simplesamlphp/cert/PublicKey.pem
cp ./PrivateKey.pem /opt/secioss/share/simplesamlphp/cert/PrivateKey.pem
※この証明書はSeciossLink - IDSuiteSP 間のSAML認証で使用します。
PublicKey.pemはSeciossLink管理画面で後ほどリバプロサーバーの設定で使用しますので、ローカルのパソコンなどにダウンロードしておいてください。
IDSuiteSPでは apache を使用するのでfirewallの穴あけもしておきます。
firewall-cmd --add-port=443/tcp --zone=public --permanent
firewall-cmd --reload
各種デーモン起動
systemctl start memcached
systemctl start httpd
設定ツールを用いてseciosslinkへの連携設定を行います。
./config.sh rp-dl setup
以下実行例
# ./config.sh rp-dl setup
認証サービスのURL [https://slink.secioss.com]:https://slink.secioss.com
テナントID(Access Managerの場合このままEnter): seciosslinkテナント名
管理者ID: 管理者ユーザ@テナント
管理者パスワード: ********
リバースプロキシサーバのURL: https://idsuitesp.test.secioss.com
以上でIDSuiteSPのインストールは完了です。
SeciossLink 設定
システム>テナント情報よりリバースプロキシ(IDSuiteSP)の設定を行います。
入力する内容は下記の通りです。
項目 | 値 |
---|---|
リバースプロキシサーバーのホスト名 | IDSuiteSPを構築したサーバーのホスト名 |
IPアドレス | 上記ホスト名を名前解決した際に取得できるIPアドレス |
暗号化用証明書 | IDSuiteSPにSAML通信用証明書として登録した 公開鍵証明書ファイルを選択してください |
入力が完了したら、最下部の保存を押下します。
次にイントラネットにあるWebアプリに対するSSO連携設定を行います。
シングルサインオン>リバースプロキシ より設定を行ってください。
入力する内容は下記の通りです。
項目 | 値 |
---|---|
アプリケーションID | 任意のID |
アプリケーション名 | 任意の名前 |
プロキシサーバーのホスト名 | IDSuiteSPを構築したサーバー |
プロキシのパス | /LoginServlet/ |
プロキシ先 | https://testservlet.test.secioss.com/LoginServlet/ |
ログインフォームの取得 | 無効 |
認証方式 | フォーム認証 |
セッションのクッキー名 | JSESSIONID |
クッキーのパス | /LoginServlet |
ログインURL | https://testservlet.test.secioss.com/LoginServlet/Login |
アクセス先パス | /LoginServlet/Welcome |
ユーザーIDの属性名 | サービス個別のログインID |
アプリケーションのパスワード | サービス個別のパスワード |
ユーザーIDのパラメータ | userName |
パスワードのパラメーター | password |
連携を行うユーザを作成し、許可するサービスに先程作成したサービスを追加してください。
そのままではアクセス権限がないので、
アクセス権限設定を開き、先程作成したサービスにチェックを入れてください。
最後に、SeciossLinkで作成したリバースプロキシ設定をIDSuiteSPへ同期します。
再度IDSuiteSPを構築したサーバーにて、以下のスクリプトを実行してください。
/opt/secioss/sbin/updaterpconf_api
必要に応じてcronに登録しておくとスクリプトを手動で実行する必要がなく、おすすめです。
vi /etc/cron.d/updaterpconf_api.cron
# 15分おきに SeciossLink から リバースプロキシ設定を取得する
*/15 * * * * root /opt/secioss/sbin/updaterpconf_api
ここまでで管理者としての作業は終了です。
サービスを付与したユーザでユーザーポータルへログインしてください。
サブメニューより「連携サービス用のID登録」と「連携先サービス用のパスワード登録」を行います。
設定が完了したら一度ログアウトしてください。
ここまでの設定で準備完了です。お疲れさまでした。
再度ユーザポータルへログインし、表示されているアイコンを選択してください。
うまく設定ができていればログインが必要なサンプルのWebアプリでID、パスワードを求められず、ログイン後のページが表示されるはずです。
いかがでしたでしょうか。
社内ネットワークからしか入れないwebアプリに対してSSOできる様になりました。
この設定の他にFIDO認証やワンタイムパスワード認証を混ぜることで
更にセキュアな利用が可能になるかと思います。
今後共セシオスリンクをよろしくお願いいたします。
以上、セシオスサポートチームでした。