模块  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服务器请求身份验证时网络代码将使用的身份验证器。

        首先,如果有安全管理器,则使用NetPermission("setDefaultAuthenticator")权限调用其checkPermission方法。 这可能会导致java.lang.SecurityException。

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

        public static Authenticator getDefault()
        获取默认身份验证器。 首先,如果有安全管理器,则使用NetPermission("requestPasswordAuthentication")权限调用其checkPermission方法。 这可能会导致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)
        询问已在系统中注册的验证者以获取密码。

        首先,如果有安全管理器,则使用NetPermission("requestPasswordAuthentication")权限调用其checkPermission方法。 这可能会导致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")权限调用其checkPermission方法。 这可能会导致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)
        询问已在系统中注册的验证者以获取密码。

        首先,如果有安全管理器,则使用NetPermission("requestPasswordAuthentication")权限调用其checkPermission方法。 这可能会导致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向系统注册的验证器(如果有)。

        首先,如果有安全管理器,则使用NetPermission("requestPasswordAuthentication")权限调用其checkPermission方法。 这可能会导致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()
        获取请求授权的站点的 null如果不可用,则获取 InetAddress
        结果
        请求授权的站点的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()
        返回请求者是代理还是服务器。
        结果
        请求者的身份验证类型
        从以下版本开始:
        1.5