イントラネットにある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認証やワンタイムパスワード認証を混ぜることで
更にセキュアな利用が可能になるかと思います。


今後共セシオスリンクをよろしくお願いいたします。

 

以上、セシオスサポートチームでした。