类 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”。例如,如果 KeyStore 驻留在硬件令牌设备上,则应指定“NONE”。
keyStoreType
密钥存储类型。如果未指定,则默认为调用 KeyStore.getDefaultType() 的结果。如果类型是“PKCS11”,则 keyStoreURL 必须是“NONE”并且不能指定 privateKeyPasswordURL。
keyStoreProvider
密钥存储提供程序。如果未指定,则使用标准搜索顺序查找提供者。
keyStoreAlias
用于登录的密钥库中的别名。当没有提供回调处理程序时是必需的。没有默认值。
keyStorePasswordURL
指定密钥库密码位置的 URL。当未提供回调处理程序且 protected 为 false 时是必需的。没有默认值。
privateKeyPasswordURL
指定访问此别名的私钥所需的特定私钥密码位置的 URL。如果需要此值但未指定,则使用密钥库密码。
protected
如果 KeyStore 具有单独的、受保护的身份验证路径(例如,连接到智能卡的专用 PIN 键盘),则应将此值设置为“true”。默认为“假”。如果为“true”,则不得指定 keyStorePasswordURL 和 privateKeyPasswordURL。
  • 构造方法详细信息

    • KeyStoreLoginModule

      public KeyStoreLoginModule()
      创建一个 KeyStoreLoginModule
  • 方法详情

    • 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 - 在登录 Configuration 中为此特定的 LoginModule 指定的选项。
    • login

      public boolean login() throws LoginException
      验证用户。

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

      指定者:
      login 在接口 LoginModule
      返回:
      在所有情况下都是正确的(不应忽略此 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 方法保存的私有状态进行检查),则此方法会清除最初保存的任何状态。

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

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

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

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

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

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