1

Tomcat サーバー sans Apache で SSO に JAAS を使用する。SSO は、いくつかの関連アプリケーションへのアクセスを制御し、うまく機能します。最近、Ant から Maven への移行を開始しました。Maven 用の Tomcat プラグインを使用するために、以前は必要のなかった Tomcat Manager アプリケーションをセットアップする必要がありました。サーバー上の他のWebアプリと一緒に、BASIC認証またはCLIENT-CERT認証の両方で起動して実行することができました.

私が抱えている問題は、ユーザーがマネージャーで認証されると、他の webapps のセッションがドロップされることです-webapp への IE ログイン、Manager へのログイン、webapp の更新、ログインページへのリダイレクト。

コンテキスト レベルで SSO バルブを定義し、ホスト レベルでレルムを定義することで、この重複を軽減することができました。これにより、ブラウザーを介して Web アプリケーション間を移動するときに SSO が引き続き機能します。ただし、問題の他のWebアプリケーションにアクセスするまで、クロスコンテキストAJAXリクエストと「ユーザーがログインしていません」というエラーが返されます。Manager のこのアプローチ認証を使用すると、他の Web アプリケーションから効果的に分離されました。

つまり、JAAS 認証モジュールを使用して Web アプリケーションで SSL/データベース認証を介して SSO を使用できるようにする最善の方法を探していますが、Tomcat に Manager を SSO から除外させます。Webapps 1、2、3 の場合は SSL 経由の IE SSO ですが、UN/PW 認証は Manager の SSO とは独立しており、認証は 2 つの間で独立しています。

これを行う方法はありますか?

現在の構成:

<Engine name="Catalina" defaultHost="localhost">

  <Host name="localhost" appBase="webapps"
        unpackWARs="true" autoDeploy="false"
        xmlValidation="false" xmlNamespaceAware="false">

    <Realm className="org.apache.catalina.realm.JAASRealm" appName="CustomLogin"
           userClassNames="com.foo.bar.User" roleClassNames="com.foo.bar.Role"
           useContextClassLoader="true" debug="false"/>
    <Valve className="org.apache.catalina.authenticator.SingleSignOn"/>

    <Context path="/Webapp1" docBase="webapp1">
        <ResourceLink name="jdbc/WEBAPP" global="jdbc/WEBAPP" type="java.sql.DataSource"/>
    </Context>

    <Context path="/Webapp2" docBase="webapp2">
        <ResourceLink name="jdbc/WEBAPP" global="jdbc/WEBAPP" type="java.sql.DataSource"/>
    </Context>

    <Context path="/Webapp3" docBase="Webapp3">
        <ResourceLink name="jdbc/WEBAPP" global="jdbc/WEBAPP" type="java.sql.DataSource"/>
    </Context>

    <Context path="/manager" docBase="manager" AntiJARLocking="false" antiResourceLocking="false" privileged="true" reloadable="false">
        <Realm className="org.apache.catalina.realm.MemoryRealm"></Realm>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="manager_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
    </Context>
  </Host>
</Engine>

この構成を使用すると、すべての webapps と Manager が SSO の制御下に置かれ、上記の重複が発生します。IE は SSL 経由で webapp1 にログインし、次に UN/PW 経由で Manager にログインし、webapp1 を更新してログイン ページにリダイレクトします。

SSO バルブを Web アプリケーションのコンテキストに移動すると、この問題は解決しますが、クロス コンテキスト AJAX 要求に対して「ユーザーがログインしていません」という応答が発生します。

4

0 に答える 0