应用程序通过在子类中覆盖getPasswordAuthentication()
来使用此类。此方法通常会使用各种getXXX()访问器方法来获取请求认证的实体的信息。然后,它必须通过与用户交互或通过其他非交互方式获取用户名和密码。然后将凭据作为PasswordAuthentication
返回值返回。
然后,通过调用setDefault(Authenticator)
来向系统注册此具体子类的实例。当需要认证时,系统将调用其中一个requestPasswordAuthentication()方法,这将调用已注册对象的getPasswordAuthentication()方法。
所有请求认证的方法都有一个默认实现,会失败。
- 自 JDK 版本:
- 1.2
- 参见:
-
Nested Class Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic Authenticator
获取默认的认证器。protected PasswordAuthentication
需要密码授权时调用。protected final String
获取请求认证站点或代理的hostname
,如果不可用则返回null
。protected final int
获取请求连接的端口号。protected final String
获取请求者给出的提示字符串。protected final String
给出请求连接的协议。protected final String
获取请求者的方案(例如,HTTP防火墙的HTTP方案)。protected final InetAddress
获取请求授权站点的InetAddress
,如果不可用则返回null
。protected URL
返回导致此认证请求的URL。protected Authenticator.RequestorType
返回请求者是代理还是服务器。static PasswordAuthentication
requestPasswordAuthentication
(String host, InetAddress addr, int port, String protocol, String prompt, String scheme) 向已注册到系统的认证器请求密码。static PasswordAuthentication
requestPasswordAuthentication
(String host, InetAddress addr, int port, String protocol, String prompt, String scheme, URL url, Authenticator.RequestorType reqType) 向已注册到系统的认证器请求密码。static PasswordAuthentication
requestPasswordAuthentication
(Authenticator authenticator, String host, InetAddress addr, int port, String protocol, String prompt, String scheme, URL url, Authenticator.RequestorType reqType) 向给定的authenticator
请求密码。static PasswordAuthentication
requestPasswordAuthentication
(InetAddress addr, int port, String protocol, String prompt, String scheme) 向已注册到系统的认证器请求密码。requestPasswordAuthenticationInstance
(String host, InetAddress addr, int port, String protocol, String prompt, String scheme, URL url, Authenticator.RequestorType reqType) 向此认证器请求密码。static void
设置在代理或HTTP服务器请求认证时网络代码将使用的认证器。
-
Constructor Details
-
Authenticator
public Authenticator()子类调用的构造函数。
-
-
Method Details
-
setDefault
设置在代理或HTTP服务器请求认证时网络代码将使用的认证器。首先,如果存在安全管理器,则将使用
NetPermission("setDefaultAuthenticator")
权限调用其checkPermission
方法。这可能导致java.lang.SecurityException。- 参数:
-
a
- 要设置的认证器。如果a为null
,则将删除先前设置的认证器。 - 抛出:
-
SecurityException
- 如果存在安全管理器且其checkPermission
方法不允许设置默认认证器。 - 参见:
-
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
获取请求认证的站点或代理的hostname
,如果不可用则为null
。- 返回:
- 需要认证的连接的主机名,如果不可用则为null。
- 自版本:
- 1.4
-
getRequestingSite
获取请求授权的站点的InetAddress
,如果不可用则为null
。- 返回:
- 请求授权的站点的InetAddress,如果不可用则为null。
-
getRequestingPort
protected final int getRequestingPort()获取请求连接的端口号。- 返回:
-
表示请求连接端口的
int
。
-
getRequestingProtocol
给出请求连接的协议。通常基于URL,但在未来的JDK中,例如,对于受密码保护的SOCKS5防火墙,可能是 "SOCKS"。- 返回:
- 协议,可选地后跟 "/version",其中version是版本号。
- 参见:
-
getRequestingPrompt
获取请求者给出的提示字符串。- 返回:
- 请求者给出的提示字符串(http请求的领域)
-
getRequestingScheme
获取请求者的方案(例如,HTTP防火墙的HTTP方案)。- 返回:
- 请求者的方案
-
getPasswordAuthentication
当需要密码授权时调用。子类应该覆盖默认实现,该实现返回null。- 返回:
- 从用户收集的PasswordAuthentication,如果没有提供则为null。
-
getRequestingURL
返回导致此认证请求的URL。- 返回:
- 请求的URL
- 自版本:
- 1.5
-
getRequestorType
返回请求者是代理还是服务器。- 返回:
- 请求者的认证类型
- 自版本:
- 1.5
-