ログインについて

ユーザー認証について、PALポータルでは JAAS のログインモジュールの実装を提供しています。 そのため、PALポータルで提供しているログインモジュールは、標準仕様に基づいているので、認証サービスに関する詳しい情報については、JDK のドキュメントなどを参照してください。

PALポータルのログイン処理の流れについては以下のようになります。

LoginProxyServlet にアクセスして、ログイン画面を作成するための初期値を設定後、LoginServlet でログイン画面が生成されます。 ログイン画面で、ユーザー名とパスワードを JAAS のモデルに基づき、アプリケーションサーバーに送信して、DefaultLoginModule でログイン処理が行われます。 実際のパスワードの検証処理などは、UserManager により行われます。 ログインに失敗であれば、LoginErrorServlet から再度ログイン画面が表示され、成功していれば、LoginRedirectorServlet からユーザーのポータルページを表示します。 ログアウトについては、LogoutServlet にアクセスすることで処理されます。

ログインモジュールの設定

設定は、通常の JAAS 認証の設定になります。 PALポータルでは、デフォルトで org.apache.jetspeed.security.impl.DefaultLoginModule を利用します。 この設定ファイルは login.conf であり、jetspeed2-security-{version}.jar の中に保存されています。 login.conf の内容は以下の通りです。

Jetspeed {
   org.apache.jetspeed.security.impl.DefaultLoginModule required;
};

この設定を上書きして変更するためには、webapps/palportal/WEB-INF/classes に login.conf を作成します。 login.conf のファイル名などを変更したい場合などは、security-providers.xml で login.conf を指定しているので、その値を変更してください。

<bean id="org.apache.jetspeed.security.AuthenticationProvider"
  class="org.apache.jetspeed.security.impl.AuthenticationProviderImpl">
  <constructor-arg index="0"><value>DefaultAuthenticator</value></constructor-arg>
  <constructor-arg index="1"><value>The default authenticator</value></constructor-arg>
  <constructor-arg index="2"><value>login.conf</value></constructor-arg>
  <constructor-arg index="3">
    <ref bean="org.apache.jetspeed.security.spi.CredentialHandler"/>
  </constructor-arg>
  <constructor-arg index="4">
    <ref bean="org.apache.jetspeed.security.spi.UserSecurityHandler"/>
  </constructor-arg>
</bean>

AuthenticationProvider は、システムプロパティの java.security.auth.login.config の値を security-providers.xml で指定した login.conf のパスを設定して、使用される LoginModule を設定します。

ログインモジュールの実装

DefaultLoginModule の実装は、以下の図のようになります。

DefaultLoginModule で使用されるクラスの役割は以下の通りです。

クラス名説明
org.apache.jetspeed.security.impl.DefaultLoginModule javax.security.auth.spi.LoginModule の実装です。 DefaultLoginModule での認証確認は、UserManager を利用しています。
org.apache.jetspeed.security.LoginModuleProxy UserManager を DefaultLoginModule で利用するためのユーティリティコンポーネントです。
org.apache.jetspeed.security.User User は javax.security.auth.Subject と java.util.prefs.Preferences を保持するインターフェースです。 PALポータルでは、UserPrincipal、RolePrincipal、GroupPrincipal の 3 種類の主体を扱います。
org.apache.jetspeed.security.UserManager ユーザーに関する操作を提供するインターフェースです。 このインターフェースは、様々な SPI を集約したもので、SPI で定義された機能を利用することができます。