Module java.base
Package java.net

Class Authenticator

java.lang.Object
java.net.Authenticator

public abstract class Authenticator extends Object
Authenticator类表示一个对象,该对象知道如何为网络连接获取认证。通常,它会通过提示用户获取信息。

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

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

所有请求认证的方法都有一个默认实现,会失败。

自 JDK 版本:
1.2
参见:
  • Constructor Details

    • Authenticator

      public Authenticator()
      子类调用的构造函数。
  • Method Details

    • setDefault

      public static void setDefault(Authenticator a)
      设置在代理或HTTP服务器请求认证时网络代码将使用的认证器。

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

      参数:
      a - 要设置的认证器。如果a为null,则将删除先前设置的认证器。
      抛出:
      SecurityException - 如果存在安全管理器且其checkPermission方法不允许设置默认认证器。
      参见:
    • getDefault

      public static Authenticator getDefault()
      获取默认的认证器。首先,如果存在安全管理器,则将使用NetPermission("requestPasswordAuthentication")权限调用其checkPermission方法。这可能导致java.lang.SecurityException。然后返回默认认证器(如果已设置)。否则,返回null
      返回:
      默认的认证器(如果已设置),否则返回null
      抛出:
      SecurityException - 如果存在安全管理器且其checkPermission方法不允许请求密码认证。
      自 JDK 版本:
      9
      参见:
    • 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方法不允许请求密码认证。
      参见:
    • requestPasswordAuthentication

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

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

      参数:
      host - 请求认证站点的主机名。
      addr - 请求认证站点的InetAddress,如果不知道则为null。
      port - 请求连接的端口。
      protocol - 请求连接的协议(getRequestingProtocol()
      prompt - 用户的提示字符串,用于标识认证领域。
      scheme - 认证方案
      返回:
      用户名/密码,如果无法获取则为null。
      抛出:
      SecurityException - 如果存在安全管理器且其checkPermission方法不允许请求密码认证。
      自 JDK 版本:
      1.4
      参见:
    • 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方法不允许请求密码认证。
      自 JDK 版本:
      1.5
      参见:
    • 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为null,则使用已通过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
      参见:
    • 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是版本号。
      参见:
    • 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