子ページ
  • IdPClusteringStickyLogin

比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

...

Shibboleth IdPクラスタを構成したときに、stateless/memcached方式では、ログイン処理中(ログイン画面表示→ID/パスワード入力→チェック→認証済みcookie設定)にノードを移動することが問題となる。独自ホスト名を用いてこれを防ぐ方法を提示する。

2. マシン構成

以下は2ノードでの構成を示すが原理的にはN台で可能である。以下は2ノードでの構成を示すが、原理的にはN台で可能である。

  • entityID: https://idp.example.ac.jp/idp/shibboleth
  • ノード1: 以下の2つのホスト名を割り当てる
    1.idp.example.ac.jp
    idp.example.ac.jp
  • ノード2: 以下の2つのホスト名を割り当てる
    2.idp.example.ac.jp
    idp.example.ac.jp

ノード1およびノード2では、上記entityIDでサービスするShibboleth ノード1およびノード2で、上記entityIDでサービスするShibboleth IdP(2.3.6)を構築する。鍵および証明書は同一のものを用い、メタデータは上記entityIDを学認メタデータテンプレートに当てはめた標準的なもの(独自ホスト名を含まない)とする。

また、stateless clustering方式もしくはmemcached方式でクラスタ構成としておくこと。

各ノードのサーバ証明書には、2つのホスト名をsubjectAltNameに記載した1枚の証明書を使うと良い。ただし携帯電話でアクセスする可能性がある場合は別々の証明書とする(CNしか見ない実装があるため)。各ノードのサーバ証明書には、2つのホスト名をsubjectAltNameに記載した1枚の証明書を使うと良い。ただし携帯電話でアクセスする場合は別々の証明書とする。
別々の証明書を使う時はName-basedでなくIPbased virtual hostでなくIP-based virtual hostを使うこと。

...

  1. /usr/java/tomcat/conf/Catalina/localhost/idp.xml
    に以下の内容のファイルを作成する。 xml
    コード ブロック
    xml
    パネル

    <Context

    sessionCookieName="JSESSIONID"

    sessionCookieDomain=".idp.example.ac.jp"

    />

    もしすでにidp.xmlが存在する場合は、sessionCookieNameおよびsessionCookieDomainを追加する。

  2. /usr/java/tomcat/webapps/idp/WEB-INF/web.xml
    のcookieDomainがコメントアウトされている行を探し、コメントアウトを解除した上で以下のように修正する。 xml
    コード ブロック
    xml
    書式設定済み
    <!-- --> <context-param> <param-name>cookieDomain</param-name> <param-value>.idp.example.ac.jp</param-value> </context-param> <!-- -->
    

  3. /etc/httpd/conf.d/ssl.conf
    を以下のように修正する。
    コード ブロックpanel

    ServerName

    1.idp.example.ac.jp:

    443 ← 当該ノードの独自ホスト名を記述 UseCanonicalName On  ← Onにしていない場合は追加

    443  ← 当該ノードの独自ホスト名を記述
    UseCanonicalName On  ← Onにしていない場合は追加

    ...

    ProxyPass

    /idp

    ajp://localhost:8009/idp


    ProxyPassReverse

    /idp/

    https://idp.example.ac.jp:443/idp/

      ← ProxyPassの行の後に追加

      ← ProxyPassの行の後に追加

4. 検証

各ノードでTomcatおよびhttpdを再起動し、それぞれにアクセスし以下を確認すること。

...