java.lang.Object
com.sun.security.auth.module.KeyStoreLoginModule
- 所有已实现的接口:
-
LoginModule
提供一个JAAS登录模块,提示输入密钥库别名,并将主体填充为别名的主体和凭据。在主体的凭据中存储别名凭据中第一个证书的主体可分辨名称的
X500Principal
,在主体的公共凭据中存储别名的证书路径,以及一个X500PrivateCredential
,其证书是别名的证书路径中的第一个证书,私钥是别名的私钥。
在配置文件中识别以下选项:
-
keyStoreURL
-
指定密钥库位置的URL。默认为指向由
user.home
系统属性指定的目录中的.keystore文件的URL。从此URL获取的输入流传递给KeyStore.load
方法。如果必须传递null
流给KeyStore.load
方法,则可以指定"NONE"。例如,如果密钥库位于硬件令牌设备上,则应指定"NONE"。 -
keyStoreType
-
密钥库类型。如果未指定,默认为调用
KeyStore.getDefaultType()
的结果。如果类型为"PKCS11",则keyStoreURL必须为"NONE",并且不得指定privateKeyPasswordURL。 -
keyStoreProvider
- 密钥库提供程序。如果未指定,将使用标准搜索顺序查找提供程序。
-
keyStoreAlias
- 要登录的密钥库中的别名。当未提供回调处理程序时需要。没有默认值。
-
keyStorePasswordURL
-
指定密钥库密码位置的URL。当未提供回调处理程序且
protected
为false时需要。没有默认值。 -
privateKeyPasswordURL
- 指定访问此别名的私钥所需的特定私钥密码位置的URL。如果需要此值且未指定,则使用密钥库密码。
-
protected
- 如果密钥库具有单独的受保护身份验证路径(例如,连接到智能卡的专用PIN键盘),则应将此值设置为"true"。默认为"false"。如果为"true",则不得指定keyStorePasswordURL和privateKeyPasswordURL。
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
abort()
如果LoginContext的整体身份验证失败,则调用此方法。boolean
commit()
提交身份验证过程的抽象方法(第2阶段)。void
initialize
(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState, Map<String, ?> options) 初始化此LoginModule
。boolean
login()
对用户进行身份验证。boolean
logout()
注销用户。
-
Constructor Details
-
KeyStoreLoginModule
public KeyStoreLoginModule()创建一个KeyStoreLoginModule
。
-
-
Method Details
-
initialize
public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState, Map<String, ?> options) 初始化此LoginModule
。- 指定者:
-
initialize
接口中的方法LoginModule
- 参数:
-
subject
- 要进行身份验证的Subject
。 -
callbackHandler
- 用于与最终用户通信的CallbackHandler
(例如,提示输入用户名和密码),可以为null
。 -
sharedState
- 共享的LoginModule
状态。 -
options
- 在此特定LoginModule
的登录Configuration
中指定的选项。
-
login
对用户进行身份验证。获取密钥库别名和相关密码。从密钥库中检索别名的主体和凭据。
- 指定者:
-
login
接口中的方法LoginModule
- 返回:
-
在所有情况下为true(不应忽略此
LoginModule
)。 - 抛出:
-
FailedLoginException
- 如果身份验证失败。 -
LoginException
- 如果身份验证失败。
-
commit
提交身份验证过程的抽象方法(第2阶段)。如果LoginContext的整体身份验证成功(相关的REQUIRED、REQUISITE、SUFFICIENT和OPTIONAL LoginModules成功),则调用此方法。
如果此LoginModule自身的身份验证尝试成功(通过检索
login
方法保存的私有状态进行检查),则此方法将为主体的凭据中别名凭据中第一个证书的主体可分辨名称关联一个X500Principal
,将别名的证书路径存储在主体的公共凭据中,并将一个X500PrivateCredential
关联到主体的私有凭据中,其证书是别名的证书路径中的第一个证书,私钥是别名的私钥。如果此LoginModule自身的身份验证尝试失败,则此方法将删除最初保存的任何状态。- 指定者:
-
commit
接口中的方法LoginModule
- 返回:
- 如果此LoginModule自身的登录和提交尝试成功,则为true;否则为false。
- 抛出:
-
LoginException
- 如果提交失败。
-
abort
如果LoginContext的整体身份验证失败(相关的REQUIRED、REQUISITE、SUFFICIENT和OPTIONAL LoginModules未成功),则调用此方法。如果此LoginModule自身的身份验证尝试成功(通过检索
login
和commit
方法保存的私有状态进行检查),则此方法将清除最初保存的任何状态。如果加载的密钥库提供程序扩展了
java.security.AuthProvider
,则将调用提供程序的logout
方法。- 指定者:
-
abort
接口中的方法LoginModule
- 返回:
- 如果此LoginModule自身的登录和/或提交尝试失败,则为false;否则为true。
- 抛出:
-
LoginException
- 如果中止失败。
-
logout
注销用户。此方法将删除
commit
方法添加的主体、公共凭据和私有凭据。如果加载的密钥库提供程序扩展了
java.security.AuthProvider
,则将调用提供程序的logout
方法。- 指定者:
-
logout
接口中的方法LoginModule
- 返回:
-
在所有情况下为true,因为不应忽略此
LoginModule
。 - 抛出:
-
LoginException
- 如果注销失败。
-