JAAS

com.sun.security.auth.module
クラス JndiLoginModule

java.lang.Object
  上位を拡張 com.sun.security.auth.module.JndiLoginModule
すべての実装されたインタフェース:
LoginModule

public class JndiLoginModule
extends Object
implements LoginModule

ユーザー名とパスワードの入力を要求し、JNDI 下で構成されたディレクトリサービスに格納されているパスワードで、入力されたパスワードを確認します。

この LoginModule は、仕様に準拠した JNDI サービスプロバイダと相互運用します。特定の JNDI サービスプロバイダを使用するためにこの LoginModule を構成するには、この LoginModule のログイン Configuration で 2 つのオプションを指定する必要があります。

        user.provider.url=name_service_url
        group.provider.url=name_service_url
 
name_service_url には、この LoginModule が関連するユーザーとグループの情報にアクセスするための、ディレクトリサービスとパスを指定します。この LoginModule では関連ユーザー情報の検索に単一レベル検索を実行するだけなので、ディレクトリサービスでユーザーとグループの情報が格納されているディレクトリの 1 レベル上を URL で指している必要があります。たとえば、NIS サーバーに接続するようにこの LoginModule を構成するには、次の URL を指定します。
user.provider.url="nis://NISServerHostName/NISDomain/user"
group.provider.url="nis://NISServerHostName/NISDomain/system/group"
 
NISServerHostName は NIS サーバーのサーバーホスト名 (nis.sun.com など)、NISDomain は NIS サーバーのドメイン (jaas.sun.com など) になります。LDAP サーバーにアクセスするには、次の URL を指定します。
user.provider.url="ldap://LDAPServerHostName/LDAPName"
group.provider.url="ldap://LDAPServerHostName/LDAPName"
 
LDAPServerHostName は LDAP サーバーのホスト名でポート番号を含めることがあり (ldap.sun.com:389 など)、LDAPName は LDAP ディレクトリでのエントリ名 (ユーザー情報は ou=People,o=Sun,c=US、グループ情報は ou=Groups,o=Sun,c=US など) になります。

ディレクトリサービスに格納されるユーザー情報の形式は RFC 2307 で規定されています。具体的には、この LoginModule は、ユーザーの uid 属性を使用してディレクトリサービスでユーザーのエントリを検索します (ここで uid=username)。検索が成功すると、この LoginModule によって userPassword 属性を使用して取得したエントリから、ユーザーの暗号化されたパスワードが入手されます。この LoginModule では、パスワードがバイト配列で格納されていると想定されています。パスワードは String に変換すると次の形式になります。

        "{crypt}encrypted_password"
 
LDAP ディレクトリサーバーは、userPassword 属性の読み取りアクセスが許可されるように構成する必要があります。ユーザーが有効なユーザー名とパスワードを入力すると、この LoginModule では UnixPrincipalUnixNumericUserPrincipal、および関連する UnixNumericGroupPrincipals を Subject と関連付けます。

この LoginModule では、次の Configuration オプションを利用することもできます。

debug       デバッグメッセージを System.out に出力する場合は true に設定します。

useFirstPass   ユーザー名とパスワードを、それぞれのキーに javax.security.auth.login.name と  javax.security.auth.login.password を使用してモジュールの共有状態から 取得する場合は、true に設定します。取得した値は認証に使用されます。
認証に失敗した場合は再試行されず、呼び出し元のアプリケーションにエラーが返されます。

tryFirstPass   ユーザー名とパスワードを、それぞれのキーに javax.security.auth.login.name と javax.security.auth.login.password を使用してモジュールの共有状態から取得する場合は、true に設定します。取得した値は認証に使用されます。認証に失敗した場合は、CallbackHandler で新しいユーザー名とパスワードを取得し、別の認証を試みます。

この認証にも失敗した場合は、呼び出し元のアプリケーションにエラーが返されます。

storePass      CallbackHandler から取得したユーザー名とパスワードを、それぞれのキーに javax.security.auth.login.name と javax.security.auth.login.password を使用して、モジュールの共有状態に格納する場合は true に設定します。既存のユーザー名とパスワードの値がすでに共有状態に存在する場合、あるいは認証に失敗した場合は、何も行われません。

clearPass     認証のログインとコミットの両フェーズが完了したあと、この LoginModule でモジュールの共有状態に格納されたユーザー名とパスワードを消去する場合は true に設定します。
 


フィールドの概要
 String GROUP_PROVIDER
           
 String USER_PROVIDER
          JNDI Provider
 
コンストラクタの概要
JndiLoginModule()
           
 
メソッドの概要
 boolean abort()
           LoginContext の認証全体が失敗した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合) に呼び出されます。
 boolean commit()
          認証プロセスをコミットする抽象メソッドです (フェーズ 2)。
 void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
          この LoginModule を初期化します。
 boolean login()
           ユーザー名とパスワードの入力を要求します。
 boolean logout()
          ユーザーをログアウトさせます。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

USER_PROVIDER

public final String USER_PROVIDER
JNDI Provider

関連項目:
定数フィールド値

GROUP_PROVIDER

public final String GROUP_PROVIDER
関連項目:
定数フィールド値
コンストラクタの詳細

JndiLoginModule

public JndiLoginModule()
メソッドの詳細

initialize

public void initialize(Subject subject,
                       CallbackHandler callbackHandler,
                       Map<String,?> sharedState,
                       Map<String,?> options)
この LoginModule を初期化します。

定義:
インタフェース LoginModule 内の initialize
パラメータ:
subject - 認証を受ける Subject

callbackHandler - エンドユーザーとの通信 (ユーザー名とパスワードの入力など) に使用される CallbackHandler

sharedState - 共有 LoginModule の状態

options - この LoginModule 用にログイン Configuration で指定されたオプション

login

public boolean login()
              throws LoginException

ユーザー名とパスワードの入力を要求します。関連するネームサービスで入力されたパスワードを確認します。

定義:
インタフェース LoginModule 内の login
戻り値:
この LoginModule を無視してはならないため、常に true
例外:
FailedLoginException - 認証に失敗した場合

LoginException - この LoginModule で認証が実行できない場合

commit

public boolean commit()
               throws LoginException
認証プロセスをコミットする抽象メソッドです (フェーズ 2)。

LoginContext の認証全体が成功した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が成功した場合) に呼び出されます。

この LoginModule 自体の認証が成功 (login メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、UnixPrincipalLoginModule 内の Subject とが関連付けられます。この LoginModule 自体の認証が失敗した場合は、当初保存された状態を削除します。

定義:
インタフェース LoginModule 内の commit
戻り値:
この LoginModule 自体のログインとコミットの試みが成功した場合は true、そうでない場合は false
例外:
LoginException - コミットに失敗した場合

abort

public boolean abort()
              throws LoginException

LoginContext の認証全体が失敗した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合) に呼び出されます。

この LoginModule 自体の認証が成功 (login メソッドと commit メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、当初保存された状態を整理します。

定義:
インタフェース LoginModule 内の abort
戻り値:
この LoginModule 自体のログインやコミットの試みが失敗した場合は false、そうでない場合は true
例外:
LoginException - 中止に失敗した場合

logout

public boolean logout()
               throws LoginException
ユーザーをログアウトさせます。

commit メソッドで追加された主体を削除します。

定義:
インタフェース LoginModule 内の logout
戻り値:
この LoginModule を無視してはならないため、常に true
例外:
LoginException - ログアウトに失敗した場合

JAAS