|
JAAS | ||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
java.lang.Objectcom.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_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 では 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 内の initializesubject - 認証を受ける Subject callbackHandler - エンドユーザとの通信 (ユーザ名とパスワードの入力など) に使用される CallbackHandler sharedState - 共有 LoginModule の状態 options - この LoginModule 用にログイン Configuration で指定されたオプション
public boolean login()
throws LoginException
ユーザ名とパスワードの入力を要求します。関連するネームサービスで入力されたパスワードを確認します。
LoginModule 内の loginLoginModule を無視してはならないため、常に true
FailedLoginException - 認証に失敗した場合
LoginException - この LoginModule で認証が実行できない場合
public boolean commit()
throws LoginException
LoginContext の認証全体が成功した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が成功した場合) に呼び出されます。
この LoginModule 自体の認証が成功 (login メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、UnixPrincipal と LoginModule 内の Subject とが関連付けられます。この LoginModule 自体の認証が失敗した場合は、当初保存された状態を削除します。
LoginModule 内の commitLoginException - コミットに失敗した場合
public boolean abort()
throws LoginException
LoginContext の認証全体が失敗した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合) に呼び出されます。
この LoginModule 自体の認証が成功 (login メソッドと commit メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、当初保存された状態を整理します。
LoginModule 内の abortLoginException - 中止に失敗した場合
public boolean logout()
throws LoginException
commit メソッドで追加された主体を削除します。
LoginModule 内の logoutLoginModule を無視してはならないため、常に true
LoginException - ログアウトに失敗した場合
|
JAAS | ||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||