Class KeyStoreLoginModule

java.lang.Object
com.sun.security.auth.module.KeyStoreLoginModule
所有已实现的接口:
LoginModule

public class KeyStoreLoginModule extends Object implements 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 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

      public boolean login() throws LoginException
      对用户进行身份验证。

      获取密钥库别名和相关密码。从密钥库中检索别名的主体和凭据。

      指定者:
      login 接口中的方法 LoginModule
      返回:
      在所有情况下为true(不应忽略此LoginModule)。
      抛出:
      FailedLoginException - 如果身份验证失败。
      LoginException - 如果身份验证失败。
    • commit

      public boolean commit() throws LoginException
      提交身份验证过程的抽象方法(第2阶段)。

      如果LoginContext的整体身份验证成功(相关的REQUIRED、REQUISITE、SUFFICIENT和OPTIONAL LoginModules成功),则调用此方法。

      如果此LoginModule自身的身份验证尝试成功(通过检索login方法保存的私有状态进行检查),则此方法将为主体的凭据中别名凭据中第一个证书的主体可分辨名称关联一个X500Principal,将别名的证书路径存储在主体的公共凭据中,并将一个X500PrivateCredential关联到主体的私有凭据中,其证书是别名的证书路径中的第一个证书,私钥是别名的私钥。如果此LoginModule自身的身份验证尝试失败,则此方法将删除最初保存的任何状态。

      指定者:
      commit 接口中的方法 LoginModule
      返回:
      如果此LoginModule自身的登录和提交尝试成功,则为true;否则为false。
      抛出:
      LoginException - 如果提交失败。
    • abort

      public boolean abort() throws LoginException
      如果LoginContext的整体身份验证失败(相关的REQUIRED、REQUISITE、SUFFICIENT和OPTIONAL LoginModules未成功),则调用此方法。

      如果此LoginModule自身的身份验证尝试成功(通过检索logincommit方法保存的私有状态进行检查),则此方法将清除最初保存的任何状态。

      如果加载的密钥库提供程序扩展了java.security.AuthProvider,则将调用提供程序的logout方法。

      指定者:
      abort 接口中的方法 LoginModule
      返回:
      如果此LoginModule自身的登录和/或提交尝试失败,则为false;否则为true。
      抛出:
      LoginException - 如果中止失败。
    • logout

      public boolean logout() throws LoginException
      注销用户。

      此方法将删除commit方法添加的主体、公共凭据和私有凭据。

      如果加载的密钥库提供程序扩展了java.security.AuthProvider,则将调用提供程序的logout方法。

      指定者:
      logout 接口中的方法 LoginModule
      返回:
      在所有情况下为true,因为不应忽略此LoginModule
      抛出:
      LoginException - 如果注销失败。