- java.lang.Object
-
- javax.security.sasl.Sasl
-
public class Sasl extends Object
用于创建SASL客户端和服务器的静态类。此类定义了如何定位,加载和实例化SASL客户端和服务器的策略。
例如,应用程序或库通过执行以下操作获取SASL客户端:
SaslClient sc = Sasl.createSaslClient(mechanisms, authorizationId, protocol, serverName, props, callbackHandler);
类似地,服务器通过使用如下所示的代码获取SASL服务器:
SaslServer ss = Sasl.createSaslServer(mechanism, protocol, serverName, props, callbackHandler);
- 从以下版本开始:
- 1.5
-
-
Field Summary
Fields Modifier and Type Field 描述 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 方法 描述 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
。
-
-
-
字段详细信息
-
QOP
public static final String QOP
指定要使用的保护质量的属性的名称。 该属性包含客户端或服务器愿意支持的以逗号分隔的有序保护值列表。 qop值是其中之一-
"auth"
- 仅认证 -
"auth-int"
- 认证加完整性保护 -
"auth-conf"
- 认证加完整性和机密性保护
"auth"
。 该常数的值为"javax.security.sasl.qop"
。- 另请参见:
- Constant Field Values
-
-
STRENGTH
public static final String STRENGTH
指定要使用的密码强度的属性的名称。 该属性包含客户端或服务器愿意支持的密码强度值的逗号分隔的有序列表。 强度值是其中之一-
"low"
-
"medium"
-
"high"
如果此属性不存在,默认强度为"high,medium,low"
。 该常数的值为"javax.security.sasl.strength"
。- 另请参见:
- Constant Field Values
-
-
SERVER_AUTH
public static final String SERVER_AUTH
指定服务器是否必须向客户端进行身份验证的属性的名称。 如果服务器必须验证客户端,该属性包含"true"
; 否则为"false"
。 默认值为"false"
。
该常数的值为"javax.security.sasl.server.authentication"
。- 另请参见:
- Constant Field Values
-
BOUND_SERVER_NAME
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"
。- 另请参见:
- Constant Field Values
-
MAX_BUFFER
public static final String MAX_BUFFER
它指定的字节接收缓冲器的最大大小的属性的名称SaslClient
/SaslServer
。 该属性包含整数的字符串表示形式。
如果此属性不存在,则默认大小由机制定义。
该常数的值为"javax.security.sasl.maxbuffer"
。- 另请参见:
- Constant Field Values
-
RAW_SEND_SIZE
public static final String RAW_SEND_SIZE
它指定的字节初始发送缓冲区的最大大小的属性的名称SaslClient
/SaslServer
。 该属性包含整数的字符串表示形式。 在验证交换期间,客户端和服务器之间协商此属性的值。
该常数的值为"javax.security.sasl.rawsendsize"
。- 另请参见:
- Constant Field Values
-
REUSE
public static final String REUSE
指定是否重新使用以前验证的会话信息的属性的名称。 如果机制实现可能尝试重用以前验证的会话信息,该属性包含“true”; 如果实现不能重复使用以前验证的会话信息,则它包含“false”。 “真实”的设置仅作为一个提示:它不一定需要实际的重用,因为重用可能不可能,原因有很多,包括但不限于缺乏对重用的机制支持,可重用信息的到期,同侪拒绝支持重用。 属性的默认值为“false”。 该常量的值为“javax.security.sasl.reuse”。 请注意,必须提供创建SASL客户端/服务器实例所需的所有其他参数和属性,而不管此属性是否已提供。 也就是说,您不能提供任何少于预期重用的信息。 支持重用的机制实现可能允许自定义其实现,例如高速缓存大小,超时和可重用性的标准。 这样的定制是依赖于实现的。- 另请参见:
- Constant Field Values
-
POLICY_NOPLAINTEXT
public static final String POLICY_NOPLAINTEXT
指定是否允许容易受到简单的被动攻击的机制(例如“PLAIN”)的属性的名称。 如果不允许这样的机制,该属性包含"true"
; 如果允许这样的机制,"false"
。 默认值为"false"
。
该常数的值为"javax.security.sasl.policy.noplaintext"
。- 另请参见:
- Constant Field Values
-
POLICY_NOACTIVE
public static final String POLICY_NOACTIVE
指定是否允许容易受到活动(非字典)攻击的机制的属性的名称。 如果不允许容易受到主动攻击的机制,该属性包含"true"
; 如果允许这样的机制,"false"
。 默认值为"false"
。
该常数的值为"javax.security.sasl.policy.noactive"
。- 另请参见:
- Constant Field Values
-
POLICY_NODICTIONARY
public static final String POLICY_NODICTIONARY
指定是否允许容易受被动字典攻击的机制的属性的名称。 如果不允许易受字典攻击的机制,该属性包含"true"
; 如果允许这样的机制,"false"
。 默认值为"false"
。
该常数的值为"javax.security.sasl.policy.nodictionary"
。- 另请参见:
- Constant Field Values
-
POLICY_NOANONYMOUS
public static final String POLICY_NOANONYMOUS
指定是否允许接受匿名登录的机制的属性的名称。 如果不允许接受匿名登录的机制,该属性包含"true"
; 如果允许这样的机制,"false"
。 默认值为"false"
。
该常数的值为"javax.security.sasl.policy.noanonymous"
。- 另请参见:
- Constant Field Values
-
POLICY_FORWARD_SECRECY
public static final String POLICY_FORWARD_SECRECY
指定是否需要在会话之间实现向前保密的机制的属性的名称。 转发保密意味着,打破一个会话将不会自动提供用于打破未来会话的信息。 如果需要在会话之间实现向前保密的机制,则该属性包含"true"
;"false"
如果不需要这样的机制。 默认值为"false"
。
该常数的值为"javax.security.sasl.policy.forward"
。- 另请参见:
- Constant Field Values
-
POLICY_PASS_CREDENTIALS
public static final String POLICY_PASS_CREDENTIALS
指定是否需要传递客户端凭据的机制的属性的名称。 如果需要通过客户端凭据的机制,该属性包含"true"
;"false"
如果不需要这样的机制。 默认值为"false"
。
该常数的值为"javax.security.sasl.policy.credentials"
。- 另请参见:
- Constant Field Values
-
CREDENTIALS
public static final String CREDENTIALS
指定要使用的凭据的属性的名称。 该属性包含一个机制特定的Java凭据对象。 机制实现可以检查此属性的值,以确定它是否是它们支持的类。 该属性可用于向支持委托认证的机制提供凭据。
该常数的值为"javax.security.sasl.credentials"
。- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
createSaslClient
public static SaslClient createSaslClient(String[] mechanisms, String authorizationId, String protocol, String serverName, Map<String,?> props, CallbackHandler cbh) throws SaslException
使用提供的参数创建一个SaslClient
。 该方法使用“Java加密体系结构(JCA)参考指南”中描述的JCA Security Provider Framework ,用于定位和选择SaslClient
实现。 首先,它从“SaslClientFactory”服务和指定的SASL机制的注册安全提供程序中获取SaslClientFactory
实例的有序列表。 然后它在列表上的每个工厂实例上调用createSaslClient()
,直到生成一个非空值为SaslClient
实例。 它返回非空SaslClient
如果搜索无法生成非空实例,或nullSaslClient
实例。SaslClientFactory的安全提供程序向表单的JCA Security Provider Framework键注册
SaslClientFactory.
mechanism_name
和值为javax.security.sasl.SaslClientFactory
的实现类名称。 例如,包含支持“DIGEST-MD5”机制的工厂类别com.wiz.sasl.digest.ClientFactory
的提供程序将向JCA注册以下条目:SaslClientFactory.DIGEST-MD5 com.wiz.sasl.digest.ClientFactory
有关如何安装和配置安全性服务提供程序的信息,请参阅“Java加密体系结构API规范和参考”。
- Implementation Note:
-
JDK参考实现另外使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供者顺序。 这可能与Security.getProviders()
返回的提供商的顺序不同。 - 参数
-
mechanisms
- 要尝试的机制名称的非空列表。 每个都是SASA机制的IANA注册名称。 (例如“GSSAPI”,“CRAM-MD5”)。 -
authorizationId
- 用于授权的可能无效的协议相关标识。 如果为空或为空,则服务器从客户端的身份验证凭据中导出授权标识。 当SASL认证成功完成时,指定的实体被授予访问权限。 -
protocol
- 正在执行身份验证的协议的非空字符串名称(例如,“ldap”)。 -
serverName
- 要验证的服务器的非空标准主机名。 -
props
- 用于选择SASL机制并配置所选机制的认证交换的可能的空属性集。 例如,如果props
包含值为"true"
的Sasl.POLICY_NOPLAINTEXT
属性,则所选择的SASL机制不能容易受到简单的被动攻击。 除了在此类中声明的标准属性之外,还可以包括其他可能机制特定的属性。 与所选机制无关的属性将被忽略,包括具有非String键的任何地图条目。 -
cbh
- 由SASL机制用于从应用程序/库获取进一步信息以完成认证的可能的空回调处理程序。 例如,SASL机制可能需要来自呼叫者的身份验证ID,密码和领域。 通过使用NameCallback
请求身份验证ID。 使用PasswordCallback
请求密码。 该领域是通过使用要求RealmChoiceCallback
,如果有选择,领域列表,并通过使用RealmCallback
如果必须输入领域。 - 结果
-
使用提供的参数创建可能为空的
SaslClient
。 如果为null,找不到将会产生一个SaslClientFactory
。 - 异常
-
SaslException
- 如果由于错误而无法创建SaslClient
。
-
createSaslServer
public static SaslServer createSaslServer(String mechanism, String protocol, String serverName, Map<String,?> props, CallbackHandler cbh) throws SaslException
为指定的机制创建一个SaslServer
。 该方法使用“Java加密体系结构(JCA)参考指南”中描述的JCA Security Provider Framework ,用于定位和选择SaslClient
实现。 首先,从“SaslServerFactory”服务和指定机制的注册安全提供程序获取SaslServerFactory
实例的有序列表。 然后它在列表上的每个工厂实例上调用createSaslServer()
,直到生成一个非空的SaslServer
实例。 它返回非空SaslServer
如果搜索无法生成非空实例,或nullSaslServer
实例。SaslServerFactory的安全提供程序向表单的JCA Security Provider Framework键注册
SaslServerFactory.
mechanism_name
和值为javax.security.sasl.SaslServerFactory
类的名称。 例如,包含支持“DIGEST-MD5”机制的工厂类com.wiz.sasl.digest.ServerFactory
的提供程序将使用JCA注册以下条目:SaslServerFactory.DIGEST-MD5 com.wiz.sasl.digest.ServerFactory
有关如何安装和配置安全性服务提供程序的信息,请参阅“Java加密体系结构API规范和参考”。
- Implementation Note:
-
JDK参考实现另外使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供者顺序。 这可能与Security.getProviders()
返回的提供商的顺序不同。 - 参数
-
mechanism
- 非空机制名称。 它必须是IANA注册的SASL机制的名称。 (例如“GSSAPI”,“CRAM-MD5”)。 -
protocol
- 正在执行身份验证的协议的非空字符串名称(例如,“ldap”)。 -
serverName
- 服务器的标准主机名,如果服务器未绑定到任何特定的主机名,则为null。 如果机制不允许未绑定的服务器,则会抛出SaslException
。 -
props
- 用于选择SASL机制并配置所选机制的认证交换的可能的props
。 例如,如果props
包含值为"true"
的Sasl.POLICY_NOPLAINTEXT
属性,则所选择的SASL机制不能容易受到简单的纯被动攻击。 除了在此类中声明的标准属性之外,还可以包括其他可能机制特定的属性。 与所选机制无关的属性将被忽略,包括具有非String键的任何地图条目。 -
cbh
- SASL机制使用的可能的空回调处理程序,以从应用程序/库获取进一步的信息来完成认证。 例如,SASL机制可能需要来自呼叫者的身份验证ID,密码和领域。 使用NameCallback
请求身份验证ID。 使用PasswordCallback
请求密码。 该领域是通过使用要求RealmChoiceCallback
,如果有选择,领域列表,并通过使用RealmCallback
如果必须输入领域。 - 结果
-
可能使用提供的参数创建的空值为
SaslServer
。 如果为null,找不到要生成的SaslServerFactory
。 - 异常
-
SaslException
- 如果由于错误而无法创建SaslServer
。
-
getSaslClientFactories
public static Enumeration<SaslClientFactory> getSaslClientFactories()
获得已知工厂的列表,生产SaslClient
。 该方法使用相同的算法来定位工厂,如createSaslClient()
。
-
getSaslServerFactories
public static Enumeration<SaslServerFactory> getSaslServerFactories()
获得已知工厂的列举,生产SaslServer
。 该方法使用与createSaslServer()
相同的算法来定位工厂。
-
-