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