Class KeyStoreLoginModule

  • 实现的所有接口
    LoginModule

    public class KeyStoreLoginModuleextends Objectimplements 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-pad),则此值应设置为“true”。 默认为“false”。 如果不能指定“true”keyStorePasswordURL和privateKeyPasswordURL。
    • 构造方法详细信息

      • KeyStoreLoginModule

        public KeyStoreLoginModule()
    • 方法详细信息

      • 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
        验证用户。

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

        Specified by:
        login在界面 LoginModule
        结果
        在所有情况下都是如此(不应忽略此 LoginModule )。
        异常
        FailedLoginException - 如果身份验证失败。
        LoginException - 如果身份验证失败
      • commit

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

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

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

        Specified by:
        commit在界面 LoginModule
        结果
        如果此LoginModule自己的登录和提交尝试成功,则返回true,否则返回false。
        异常
        LoginException - 如果提交失败
      • abort

        public boolean abort()              throws LoginException
        如果LoginContext的整体身份验证失败,则调用此方法。 (相关的必需,要求,充足和可选的LoginModule没有成功)。

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

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

        Specified by:
        abort在界面 LoginModule
        结果
        如果此LoginModule自己的登录和/或提交尝试失败,则返回false,否则返回true。
        异常
        LoginException - 如果中止失败。
      • logout

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

        此方法删除commit方法添加的Principals,公共凭据和私有凭据。

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

        Specified by:
        logout在界面 LoginModule
        结果
        在所有情况下都是如此,因为 LoginModule不应该被忽略。
        异常
        LoginException - if the logout fails.