ユーザー認証について、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 で定義された機能を利用することができます。 |