Class 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不能被指定。
    • 构造方法详细信息

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

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

        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自己的身份验证尝试成功(通过检索由logincommit方法保存的私有状态进行检查),则此方法将清除最初保存的任何状态。

        如果加载的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.