public class Sasl extends Object
此类定义了如何定位,加载和实例化SASL客户端和服务器的策略。
例如,应用程序或库通过执行以下操作获取SASL客户端:
SaslClient sc = Sasl.createSaslClient(mechanisms,
authorizationId, protocol, serverName, props, callbackHandler);
然后可以继续使用实例来创建身份验证连接。
类似地,服务器通过使用如下所示的代码获取SASL服务器:
SaslServer ss = Sasl.createSaslServer(mechanism,
protocol, serverName, props, callbackHandler);
| Modifier and Type | Field and Description |
|---|---|
static String |
BOUND_SERVER_NAME
指定未绑定服务器的绑定服务器名称的属性的名称。
|
static String |
CREDENTIALS
指定要使用的凭据的属性的名称。
|
static String |
MAX_BUFFER
它指定的字节接收缓冲器的最大大小的属性的名称
SaslClient /
SaslServer 。
|
static String |
POLICY_FORWARD_SECRECY
指定是否需要在会话之间实现向前保密的机制的属性的名称。
|
static String |
POLICY_NOACTIVE
指定是否允许容易受到活动(非字典)攻击的机制的属性的名称。
|
static String |
POLICY_NOANONYMOUS
指定是否允许接受匿名登录的机制的属性的名称。
|
static String |
POLICY_NODICTIONARY
指定是否允许容易受被动字典攻击的机制的属性的名称。
|
static String |
POLICY_NOPLAINTEXT
指定是否允许容易受到简单的被动攻击的机制(例如“PLAIN”)的属性的名称。
|
static String |
POLICY_PASS_CREDENTIALS
指定是否需要传递客户端凭据的机制的属性的名称。
|
static String |
QOP
指定要使用的保护质量的属性的名称。
|
static String |
RAW_SEND_SIZE
一个属性的名称,指定原始发送缓冲区的最大大小(以字节为单位),
SaslClient
SaslServer 。
|
static String |
REUSE
指定是否重新使用以前验证的会话信息的属性的名称。
|
static String |
SERVER_AUTH
指定服务器是否必须向客户端进行身份验证的属性的名称。
|
static String |
STRENGTH
指定要使用的密码强度的属性的名称。
|
| Modifier and Type | Method and Description |
|---|---|
static SaslClient |
createSaslClient(String[] mechanisms, String authorizationId, String protocol, String serverName, Map<String,?> props, CallbackHandler cbh)
创建
SaslClient使用所提供的参数。
|
static SaslServer |
createSaslServer(String mechanism, String protocol, String serverName, Map<String,?> props, CallbackHandler cbh)
创建一个
SaslServer指定机制。
|
static Enumeration<SaslClientFactory> |
getSaslClientFactories()
获得已知工厂的列举,生产
SaslClient 。
|
static Enumeration<SaslServerFactory> |
getSaslServerFactories()
获得已知工厂的列举,生产
SaslServer 。
|
public static final String QOP
"auth" - 仅认证 "auth-int" - 认证加完整性保护 "auth-conf" - 认证加完整性和机密性保护 "auth" 。
该常数的值为"javax.security.sasl.qop" 。
public static final String STRENGTH
"low" "medium" "high" "high,medium,low" 。
该常数的值为"javax.security.sasl.strength" 。
public static final String SERVER_AUTH
"true" ;
"false"否则。
默认值为"false" 。
"javax.security.sasl.server.authentication" 。
public static final String BOUND_SERVER_NAME
serverName在参数createSaslServer(java.lang.String, java.lang.String, java.lang.String, java.util.Map<java.lang.String, ?>, javax.security.auth.callback.CallbackHandler)为空。
该属性在认证交换完成后包含绑定的主机名。
它仅在服务器端可用。
"javax.security.sasl.bound.server.name" 。
public static final String MAX_BUFFER
SaslClient ) SaslServer 。
该属性包含整数的字符串表示形式。
"javax.security.sasl.maxbuffer" 。
public static final String RAW_SEND_SIZE
SaslClient ) SaslServer 。
该属性包含整数的字符串表示形式。
在验证交换期间,客户端和服务器之间协商此属性的值。
"javax.security.sasl.rawsendsize" 。
public static final String REUSE
public static final String POLICY_NOPLAINTEXT
"true"这样的机制,该属性包含"true";
"false"如果允许这样的机制。
默认值为"false" 。
"javax.security.sasl.policy.noplaintext" 。
public static final String POLICY_NOACTIVE
"true"如果易受主动攻击的机制是不允许的;
"false"如果这样的机制是允许的。
默认值为"false" 。
"javax.security.sasl.policy.noactive" 。
public static final String POLICY_NODICTIONARY
"true"则属性包含"true";
"false"如果这样的机制是允许的。
默认值为"false" 。
"javax.security.sasl.policy.nodictionary" 。
public static final String POLICY_NOANONYMOUS
"true"如果接受匿名登录的机制是不允许的;
"false"如果这样的机制是允许的。
默认值为"false" 。
"javax.security.sasl.policy.noanonymous" 。
public static final String POLICY_FORWARD_SECRECY
"true"则该属性包含"true" ;
"false"如果不需要这样的机制。
默认值为"false" 。
"javax.security.sasl.policy.forward" 。
public static final String POLICY_PASS_CREDENTIALS
"true"则该属性包含"true" ;
"false"如果不需要这样的机制。
默认值为"false" 。
"javax.security.sasl.policy.credentials" 。
public static final String CREDENTIALS
"javax.security.sasl.credentials" 。
public static SaslClient createSaslClient(String[] mechanisms, String authorizationId, String protocol, String serverName, Map<String,?> props, CallbackHandler cbh) throws SaslException
SaslClient使用所提供的参数。
此方法使用JCA Security Provider Framework ,在“Java加密体系结构API规范与参考”中所述,用于定位和选择SaslClient实现。
首先,它从“SaslClientFactory”服务和指定的SASL机制的注册安全提供程序获取SaslClientFactory实例的有序列表。
然后它在列表上的每个工厂实例上调用createSaslClient() ,直到生成一个非空的SaslClient实例。
它返回非空值SaslClient实例,如果搜索无法生成非空值SaslClient实例,则返回null。
SaslClientFactory的安全提供程序向表单的JCA Security Provider Framework键注册
SaslClientFactory. mechanism_name
和值为javax.security.sasl.SaslClientFactory的javax.security.sasl.SaslClientFactory类的名称。 例如,一个包含工厂类, com.wiz.sasl.digest.ClientFactory ,支持“DIGEST-MD5”机制的提供商将注册以下条目与JCA: SaslClientFactory.DIGEST-MD5 com.wiz.sasl.digest.ClientFactory
有关如何安装和配置安全性服务提供程序的信息,请参阅“Java加密体系结构API规范和参考”。
mechanisms - 要尝试的机制名称的非空列表。
每个都是SASA机制的IANA注册名称。
(例如“GSSAPI”,“CRAM-MD5”)。
authorizationId - 用于授权的可能无效的协议相关标识。
如果为空或为空,则服务器从客户端的身份验证凭据中导出授权标识。
当SASL认证成功完成时,指定的实体被授予访问权限。
protocol - 正在执行身份验证的协议的非空字符串名称(例如,“ldap”)。
serverName - 要验证的服务器的非空的全限定主机名。
props - 用于选择SASL机制并配置所选机制的认证交换的可能的空属性集。
例如,如果props包含值为"true"的Sasl.POLICY_NOPLAINTEXT属性,则所选择的SASL机制不能容易受到简单的普通被动攻击。
除了在此类中声明的标准属性之外,还可以包括其他可能机制特定的属性。
与所选机制无关的属性将被忽略,包括具有非String键的任何地图条目。
cbh - SASL机制使用的可能的空回调处理程序,以从应用程序/库获取进一步的信息来完成认证。
例如,SASL机制可能需要来自呼叫者的身份验证ID,密码和领域。
认证ID是通过使用所请求的NameCallback 。
使用PasswordCallback密码。
该领域是通过使用要求RealmChoiceCallback ,如果有选择,领域列表,并通过使用RealmCallback如果必须输入领域。
SaslClient使用提供的SaslClient创建。
如果为null,找不到SaslClientFactory就会产生一个。
SaslException - 如果由于错误而无法创建
SaslClient 。
public static SaslServer createSaslServer(String mechanism, String protocol, String serverName, Map<String,?> props, CallbackHandler cbh) throws SaslException
SaslServer指定机制。
此方法使用JCA Security Provider Framework ,在“Java加密体系结构API规范与参考”中所述,用于定位和选择SaslServer实现。
首先,它从“SaslServerFactory”服务和指定机制的注册安全提供程序获取SaslServerFactory实例的有序列表。
然后它在列表上的每个工厂实例上调用createSaslServer() ,直到生成一个非空值SaslServer实例。
它返回非空值SaslServer实例,如果搜索无法生成非空值SaslServer实例,则返回null。
SaslServerFactory的安全提供程序向表单的JCA Security Provider Framework键注册
SaslServerFactory. mechanism_name
和值为javax.security.sasl.SaslServerFactory的javax.security.sasl.SaslServerFactory类的名称。 例如,一个包含工厂类, com.wiz.sasl.digest.ServerFactory ,支持“DIGEST-MD5”机制的提供商将注册以下条目与JCA: SaslServerFactory.DIGEST-MD5 com.wiz.sasl.digest.ServerFactory
有关如何安装和配置安全性服务提供程序的信息,请参阅“Java加密体系结构API规范和参考”。
mechanism - 非空机制名称。
它必须是IANA注册的SASL机制的名称。
(例如“GSSAPI”,“CRAM-MD5”)。
protocol - 正在执行身份验证的协议的非空字符串名称(例如,“ldap”)。
serverName - 服务器的标准主机名,如果服务器未绑定到任何特定主机名,则为null。
如果机制不允许未绑定的服务器,则会抛出SaslException 。
props - 用于选择SASL机制并配置所选机制的认证交换的可能的空属性集。
例如,如果props包含值为"true"的Sasl.POLICY_NOPLAINTEXT属性,则所选择的SASL机制不能容易受到简单的普通被动攻击。
除了在此类中声明的标准属性之外,还可以包括其他可能机制特定的属性。
与所选机制无关的属性将被忽略,包括具有非String键的任何地图条目。
cbh - SASL机制使用的可能的空回调处理程序,以从应用程序/库获取进一步的信息来完成身份验证。
例如,SASL机制可能需要来自呼叫者的身份验证ID,密码和领域。
认证ID是通过使用所请求的NameCallback 。
使用PasswordCallback密码。
该领域是通过使用要求RealmChoiceCallback ,如果有选择,领域列表,并通过使用RealmCallback如果必须输入领域。
SaslServer使用提供的SaslServer创建。
如果为null,找不到SaslServerFactory就会产生一个。
SaslException - 如果由于错误而无法创建
SaslServer 。
public static Enumeration<SaslClientFactory> getSaslClientFactories()
SaslClient 。
该方法使用与createSaslClient()相同的算法来定位createSaslClient() 。
public static Enumeration<SaslServerFactory> getSaslServerFactories()
SaslServer 。
该方法使用与createSaslServer()相同的算法来定位createSaslServer() 。
SaslServer 。
createSaslServer(java.lang.String, java.lang.String, java.lang.String, java.util.Map<java.lang.String, ?>, javax.security.auth.callback.CallbackHandler)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.