Module  java.base
软件包  java.net

Class Authenticator



  • public abstract class Authenticator
    extends Object
    Authenticator类代表一个知道如何获取网络连接认证的对象。 通常,它将通过提示用户提供信息来做到这一点。

    应用程序通过在子类中覆盖getPasswordAuthentication()来使用此类。 该方法通常将使用各种getXXX()访问器方法来获取有关请求身份验证的实体的信息。 然后必须通过与用户交互或通过其他非交互方式获取用户名和密码。 凭证返回值为PasswordAuthentication

    然后通过调用setDefault(Authenticator)向系统注册此具体子类的一个实例。 当需要身份验证时,系统将调用requestPasswordAuthentication()方法之一,这又将调用注册对象的getPasswordAuthentication()方法。

    请求身份验证的所有方法都具有失败的默认实现。

    从以下版本开始:
    1.2
    另请参见:
    setDefault(java.net.Authenticator)getPasswordAuthentication()
    • 构造方法详细信息

      • Authenticator

        public Authenticator​()
    • 方法详细信息

      • setDefault

        public static void setDefault​(Authenticator a)
        设置代理或HTTP服务器要求进行身份验证时由网络代码使用的身份验证器。

        首先,如果有一个安全管理员,它的checkPermission方法被调用一个NetPermission("setDefaultAuthenticator")权限。 这可能会导致java.lang.SecurityException异常。

        参数
        a - 要设置的认证器。 如果a是null那么任何先前设置的认证器将被删除。
        异常
        SecurityException - 如果安全管理器存在,并且其 checkPermission方法不允许设置默认验证器。
        另请参见:
        SecurityManager.checkPermission(java.security.Permission)NetPermission
      • getDefault

        public static Authenticator getDefault​()
        获取默认验证器。 首先,如果有一个安全管理器,它的checkPermission方法被调用一个NetPermission("requestPasswordAuthentication")权限。 这可能会导致java.lang.SecurityException异常。 然后返回默认认证器(如果设置)。 否则返回null
        结果
        缺省认证方,如果设置, null
        异常
        SecurityException - 如果安全管理器存在,并且其 checkPermission方法不允许请求密码认证。
        从以下版本开始:
        9
        另请参见:
        SecurityManager.checkPermission(java.security.Permission)NetPermission
      • requestPasswordAuthentication

        public static PasswordAuthentication requestPasswordAuthentication​(InetAddress addr,
                                                                           int port,
                                                                           String protocol,
                                                                           String prompt,
                                                                           String scheme)
        请向系统注册的验证者询问密码。

        首先,如果有一个安全管理器,它的checkPermission方法被调用一个NetPermission("requestPasswordAuthentication")权限。 这可能会导致java.lang.SecurityException异常。

        参数
        addr - 请求授权的站点的InetAddress,如果不知道,则为null。
        port - 请求连接的端口
        protocol - 请求连接的协议( getRequestingProtocol()
        prompt - 用户的提示字符串
        scheme - 认证方案
        结果
        用户名/密码,如果不能得到,则为null。
        异常
        SecurityException - 如果存在安全管理员,并且其 checkPermission方法不允许密码认证请求。
        另请参见:
        SecurityManager.checkPermission(java.security.Permission)NetPermission
      • requestPasswordAuthentication

        public static PasswordAuthentication requestPasswordAuthentication​(String host,
                                                                           InetAddress addr,
                                                                           int port,
                                                                           String protocol,
                                                                           String prompt,
                                                                           String scheme)
        请向系统注册的验证者询问密码。 这是申请密码的首选方法,因为在InetAddress不可用的情况下可以提供主机名。

        首先,如果有一个安全管理员,它的checkPermission方法被调用一个NetPermission("requestPasswordAuthentication")权限。 这可能会导致java.lang.SecurityException异常。

        参数
        host - 请求身份验证的站点的主机名。
        addr - 请求认证的站点的InetAddress,如果不知道,则为null。
        port - 所请求连接的端口。
        protocol - 请求连接的协议( getRequestingProtocol()
        prompt - 用于标识身份验证领域的用户的提示字符串。
        scheme - 认证方案
        结果
        用户名/密码,如果不能得到,则为null。
        异常
        SecurityException - 如果安全管理器存在,并且其 checkPermission方法不允许密码认证请求。
        从以下版本开始:
        1.4
        另请参见:
        SecurityManager.checkPermission(java.security.Permission)NetPermission
      • requestPasswordAuthentication

        public static PasswordAuthentication requestPasswordAuthentication​(String host,
                                                                           InetAddress addr,
                                                                           int port,
                                                                           String protocol,
                                                                           String prompt,
                                                                           String scheme,
                                                                           URL url,
                                                                           Authenticator.RequestorType reqType)
        请向系统注册的验证者询问密码。

        首先,如果有一个安全管理员,它的checkPermission方法被调用一个NetPermission("requestPasswordAuthentication")权限。 这可能会导致java.lang.SecurityException异常。

        参数
        host - 请求身份验证的站点的主机名。
        addr - 请求授权的站点的InetAddress,如果不知道则为null。
        port - 所请求连接的端口
        protocol - 请求连接的协议( getRequestingProtocol()
        prompt - 用户的提示字符串
        scheme - 认证方案
        url - 导致身份验证的请求URL
        reqType - 请求身份验证的实体的类型(服务器或代理)。
        结果
        用户名/密码,如果不能得到,则为null。
        异常
        SecurityException - 如果存在安全管理员,并且其 checkPermission方法不允许密码认证请求。
        从以下版本开始:
        1.5
        另请参见:
        SecurityManager.checkPermission(java.security.Permission)NetPermission
      • requestPasswordAuthentication

        public static PasswordAuthentication requestPasswordAuthentication​(Authenticator authenticator,
                                                                           String host,
                                                                           InetAddress addr,
                                                                           int port,
                                                                           String protocol,
                                                                           String prompt,
                                                                           String scheme,
                                                                           URL url,
                                                                           Authenticator.RequestorType reqType)
        询问给定的authenticator密码。 如果给定的authenticator为空,则使用已使用setDefault向系统注册的认证方(如果有)。

        首先,如果有一个安全管理员,它的checkPermission方法被调用一个NetPermission("requestPasswordAuthentication")权限。 这可能会导致java.lang.SecurityException异常。

        参数
        authenticator - 认证者,或 null
        host - 请求身份验证的站点的主机名。
        addr - 请求授权的站点的InetAddress,如果不知道,则为null。
        port - 所请求连接的端口
        protocol - 请求连接的协议( getRequestingProtocol()
        prompt - 用户的提示字符串
        scheme - 认证方案
        url - 导致身份验证的请求URL
        reqType - 请求身份验证的实体的类型(服务器或代理)。
        结果
        用户名/密码,或 null如果不能得到。
        异常
        SecurityException - 如果安全管理器存在,并且其 checkPermission方法不允许密码认证请求。
        从以下版本开始:
        9
        另请参见:
        SecurityManager.checkPermission(java.security.Permission)NetPermission
      • requestPasswordAuthenticationInstance

        public PasswordAuthentication requestPasswordAuthenticationInstance​(String host,
                                                                            InetAddress addr,
                                                                            int port,
                                                                            String protocol,
                                                                            String prompt,
                                                                            String scheme,
                                                                            URL url,
                                                                            Authenticator.RequestorType reqType)
        向该验证者询问密码。
        参数
        host - 请求身份验证的站点的主机名。
        addr - 请求授权的站点的InetAddress,如果不知道,则为null。
        port - 所请求连接的端口
        protocol - 请求连接的协议( getRequestingProtocol()
        prompt - 用户的提示字符串
        scheme - 认证方案
        url - 导致身份验证的请求URL
        reqType - 请求身份验证的实体的类型(服务器或代理)。
        结果
        用户名/密码,如果不能得到,则为null
        从以下版本开始:
        9
      • getRequestingHost

        protected final String getRequestingHost​()
        获取 hostname的网站或代理请求验证的,或 null如果不可用。
        结果
        需要验证的连接的主机名,如果不可用,则为null。
        从以下版本开始:
        1.4
      • getRequestingSite

        protected final InetAddress getRequestingSite​()
        获取 InetAddress请求授权的站点,或者 null如果不可用。
        结果
        请求授权的站点的InetAddress,如果不可用,则为null。
      • getRequestingPort

        protected final int getRequestingPort​()
        获取请求的连接的端口号。
        结果
        一个 int指示所请求连接的端口。
      • getRequestingProtocol

        protected final String getRequestingProtocol​()
        给出请求连接的协议。 通常这将基于一个URL,但在未来的JDK中,例如可能是一个受密码保护的SOCKS5防火墙的“SOCKS”。
        结果
        协议,可选地后跟“/ version”,其中version是版本号。
        另请参见:
        URL.getProtocol()
      • getRequestingPrompt

        protected final String getRequestingPrompt​()
        获取请求者给出的提示字符串。
        结果
        请求者提供的提示字符串(http请求的领域)
      • getRequestingScheme

        protected final String getRequestingScheme​()
        获取请求者的方案(例如HTTP防火墙的HTTP方案)。
        结果
        请求者的方案
      • getPasswordAuthentication

        protected PasswordAuthentication getPasswordAuthentication​()
        当需要密码授权时调用。 子类应该覆盖默认的实现,返回null。
        结果
        从用户收集的PasswordAuthentication,如果没有提供,则为null。
      • getRequestingURL

        protected URL getRequestingURL​()
        返回导致此请求验证的URL。
        结果
        请求的URL
        从以下版本开始:
        1.5
      • getRequestorType

        protected Authenticator.RequestorType getRequestorType​()
        返回请求者是Proxy还是Server。
        结果
        请求者的身份验证类型
        从以下版本开始:
        1.5