- java.lang.Object
-
- com.sun.security.auth.module.KeyStoreLoginModule
-
- All Implemented Interfaces:
-
LoginModule
public class KeyStoreLoginModule extends Object implements LoginModule
提供一个JAAS登录模块,提示密钥存储别名,并使用别名的主体和凭据填充主题。 在主题的主体中的别名凭据中存储第一个X500Principal
的主体可分辨名称的X500Principal
,该对象的公共凭证中的别名的证书路径,以及一个X500PrivateCredential
其证书是别名的证书路径中的第一个证书,其私钥为该主题私人凭据中的别名的私钥。识别配置文件中的以下选项:
-
keyStoreURL
-
指定密钥库的位置的URL。
默认为指向由
user.home
系统属性指定的目录中的.keystore文件的URL。 来自此URL的输入流将传递给KeyStore.load
方法。 如果null
流必须传递到KeyStore.load
方法,则可以指定“NONE”。 例如,如果KeyStore驻留在硬体令牌设备上,则应指定“NONE”。 -
keyStoreType
-
钥匙店类型。
如果未指定,则默认为调用
KeyStore.getDefaultType()
的结果。 如果类型为“PKCS11”,则keyStoreURL必须为“NONE”,并且不能指定privateKeyPasswordURL。 -
keyStoreProvider
- 关键商店提供商。 如果未指定,请使用标准搜索顺序查找提供程序。
-
keyStoreAlias
- 密码商店中的别名登录为。 不提供回调处理程序时需要。 没有默认值。
-
keyStorePasswordURL
-
指定密钥存储区密码位置的URL。
当没有提供回调处理程序并且
protected
为假时需要。 没有默认值。 -
privateKeyPasswordURL
- 一个URL,用于指定访问此别名私钥所需的特定私钥密码的位置。 如果需要并且未指定该值,则使用密钥库密码。
-
protected
- 如果KeyStore具有单独的受保护的身份验证路径(例如,连接到智能卡的专用PIN焊盘),则该值应设置为“true”。 默认为“false”。 如果“true”keyStorePasswordURL和privateKeyPasswordURL不能被指定。
-
-
构造方法摘要
构造方法 Constructor 描述 KeyStoreLoginModule()
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
abort()
如果LoginContext的整体身份验证失败,则调用此方法。boolean
commit()
提交认证过程的抽象方法(阶段2)。void
initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
初始化这个LoginModule
。boolean
login()
验证用户。boolean
logout()
注销用户。
-
-
-
方法详细信息
-
initialize
public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
初始化这个LoginModule
。- Specified by:
-
initialize
在接口LoginModule
- 参数
-
subject
- 要验证的Subject
。 -
callbackHandler
- 用于与最终用户通信的CallbackHandler
(例如提示用户名和密码),其可以是null
。 -
sharedState
- 共享LoginModule
状态。 -
options
- 在特定LoginModule
的登录Configuration
指定的选项。
-
login
public boolean login() throws LoginException
验证用户。获取密钥库别名和相关密码。 从密钥库检索别名的主体和凭据。
- Specified by:
-
login
在接口LoginModule
- 结果
-
在所有情况下都是这样(这个
LoginModule
不应该被忽略)。 - 异常
-
FailedLoginException
- 如果身份验证失败。 -
LoginException
- 如果身份验证失败
-
commit
public boolean commit() throws LoginException
提交认证过程的抽象方法(阶段2)。如果LoginContext的整体身份验证成功(相关的请求,REQUISITE,SUPPICIENT和可选LoginModules成功),则调用此方法。
如果此LoginModule自己的身份验证尝试成功(通过检索通过
login
方法保存的私有状态进行检查),则该方法将关联主题主体中别名凭据中第一个证书的主体标识名称的X500Principal
,该别名的证书路径该主体的公共凭证,以及一个X500PrivateCredential
其证书是别名证书路径中的第一个证书,其私钥是主题私有凭据中别名的私钥。 如果此LoginModule自身的身份验证尝试失败,则此方法将删除原始保存的任何状态。- Specified by:
-
commit
在接口LoginModule
- 结果
- 如果此LoginModule自己的登录和提交尝试成功,则为true,否则为false。
- 异常
-
LoginException
- 如果提交失败
-
abort
public boolean abort() throws LoginException
如果LoginContext的整体身份验证失败,则调用此方法。 (相关要求,必要,有效和可选的LoginModules没有成功)。如果此LoginModule自己的身份验证尝试成功(通过检索由
login
和commit
方法保存的私有状态进行检查),则此方法将清除最初保存的任何状态。如果加载的KeyStore的提供商扩展了
java.security.AuthProvider
,则调用提供程序的logout
方法。- Specified by:
-
abort
在接口LoginModule
- 结果
- 如果此LoginModule自己的登录和/或提交尝试失败,则为false,否则为true。
- 异常
-
LoginException
- 如果中止失败。
-
logout
public boolean logout() throws LoginException
注销用户。此方法将删除由
commit
方法添加的Principal,公用凭证和私有凭据。如果加载的KeyStore的提供商扩展了
java.security.AuthProvider
,则调用提供程序的logout
方法。- Specified by:
-
logout
在接口LoginModule
- 结果
-
在所有情况下都是这样,因为这个
LoginModule
不应该被忽略。 - 异常
-
LoginException
- if the logout fails.
-
-