|
JAAS | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object com.sun.security.auth.module.JndiLoginModule
public class JndiLoginModule
ユーザ名とパスワードの入力を要求し、JNDI 下で構成されたディレクトリサービスに格納されているパスワードで、入力されたパスワードを確認します。
この LoginModule
は、仕様に準拠した JNDI サービスプロバイダと相互運用します。特定の JNDI サービスプロバイダを使用するためにこの LoginModule
を構成するには、この LoginModule
のログイン Configuration
で 2 つのオプションを指定する必要があります。
user.provider.url=name_service_url group.provider.url=name_service_urlname_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
では UnixPrincipal
、UnixNumericUserPrincipal
、および関連する 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 |
フィールドの詳細 |
---|
public final String USER_PROVIDER
public final String GROUP_PROVIDER
コンストラクタの詳細 |
---|
public JndiLoginModule()
メソッドの詳細 |
---|
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
で指定されたオプションpublic boolean login() throws LoginException
ユーザ名とパスワードの入力を要求します。関連するネームサービスで入力されたパスワードを確認します。
LoginModule
内の login
LoginModule
を無視してはならないため、常に true
FailedLoginException
- 認証に失敗した場合
LoginException
- この LoginModule
で認証が実行できない場合public boolean commit() throws LoginException
LoginContext の認証全体が成功した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が成功した場合) に呼び出されます。
この LoginModule 自体の認証が成功 (login
メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、UnixPrincipal
と LoginModule
内の Subject
とが関連付けられます。この LoginModule 自体の認証が失敗した場合は、当初保存された状態を削除します。
LoginModule
内の commit
LoginException
- コミットに失敗した場合public boolean abort() throws LoginException
LoginContext の認証全体が失敗した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合) に呼び出されます。
この LoginModule 自体の認証が成功 (login
メソッドと commit
メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、当初保存された状態を整理します。
LoginModule
内の abort
LoginException
- 中止に失敗した場合public boolean logout() throws LoginException
commit
メソッドで追加された主体を削除します。
LoginModule
内の logout
LoginModule
を無視してはならないため、常に true
LoginException
- ログアウトに失敗した場合
|
JAAS | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |