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)