软件包  javax.security.sasl

Class 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
    • 字段详细信息

      • QOP

        public static final String QOP
        指定要使用的保护质量的属性的名称。 该属性包含客户端或服务器愿意支持的逗号分隔的有序保护值列表。 qop值是其中之一
        • "auth" - 仅限身份验证
        • "auth-int" - 身份验证和完整性保护
        • "auth-conf" - 身份验证以及完整性和机密性保护
        列表的顺序指定客户端或服务器的首选顺序。 如果此属性不存在,则默认qop为"auth" 此常量的值为"javax.security.sasl.qop"
        另请参见:
        常数字段值
      • STRENGTH

        public static final String STRENGTH
        指定要使用的密码强度的属性的名称。 该属性包含客户端或服务器愿意支持的以逗号分隔的有序密码强度值列表。 强度值是其中之一
        • "low"
        • "medium"
        • "high"
        列表的顺序指定客户端或服务器的首选顺序。 实现应该允许配置这些值的含义。 应用程序可以使用具有JCE感知机制的Java密码术扩展(JCE)来控制与强度值匹配的密码套件的选择。
        如果此属性不存在,则默认强度为"high,medium,low" 此常量的值为"javax.security.sasl.strength"
        另请参见:
        常数字段值
      • SERVER_AUTH

        public static final String SERVER_AUTH
        属性的名称,指定服务器是否必须向客户端进行身份验证。 如果服务器必须对客户端进行身份验证,则该属性包含"true" ; 否则为"false" 默认值为"false"
        此常量的值为"javax.security.sasl.server.authentication"
        另请参见:
        常数字段值
      • MAX_BUFFER

        public static final String MAX_BUFFER
        指定接收缓冲区最大大小的属性名称,以字节为SaslClient ,单位为SaslServer 该属性包含整数的字符串表示形式。
        如果此属性不存在,则默认大小由机制定义。
        此常量的值为"javax.security.sasl.maxbuffer"
        另请参见:
        常数字段值
      • RAW_SEND_SIZE

        public static final String RAW_SEND_SIZE
        指定原始发送缓冲区的最大大小的属性的名称,以字节为SaslClient SaslServer 该属性包含整数的字符串表示形式。 在身份验证交换期间,将在客户端和服务器之间协商此属性的值。
        此常量的值为"javax.security.sasl.rawsendsize"
        另请参见:
        常数字段值
      • REUSE

        public static final String REUSE
        指定是否重用以前经过身份验证的会话信息的属性的名称。 如果机制实现可能尝试重用先前经过身份验证的会话信息,则该属性包含“true”; 如果实现不能重用以前经过身份验证的会话信息,则它包含“false”。 设置为“true”仅作为提示:它不一定需要实际重用,因为由于多种原因可能无法重用,包括但不限于缺少重用机制支持,可重用信息到期,以及同行拒绝支持重用。 该属性的默认值为“false”。 此常量的值为“javax.security.sasl.reuse”。 请注意,无论是否已提供此属性,都必须提供创建SASL客户端/服务器实例所需的所有其他参数和属性。 也就是说,在预期重用时,您无法提供任何更少的信息。 支持重用的机制实现可能允许自定义其实现,例如缓存大小,超时和可重用性标准等因素。 此类自定义依赖于实现。
        另请参见:
        常数字段值
      • POLICY_NOPLAINTEXT

        public static final String POLICY_NOPLAINTEXT
        属性的名称,指定是否允许对易受简单的普通被动攻击(例如“PLAIN”)敏感的机制。 如果不允许此类机制,则该属性包含"true" ; "false"是否允许此类机制。 默认值为"false"
        此常量的值为"javax.security.sasl.policy.noplaintext"
        另请参见:
        常数字段值
      • POLICY_NOACTIVE

        public static final String POLICY_NOACTIVE
        属性的名称,指定是否允许容易受到活动(非字典)攻击的机制。 如果不允许易受主动攻击的机制,则该属性包含"true" ; "false"是否允许此类机制。 默认值为"false"
        此常量的值为"javax.security.sasl.policy.noactive"
        另请参见:
        常数字段值
      • POLICY_NODICTIONARY

        public static final String POLICY_NODICTIONARY
        属性的名称,指定是否允许容易受到被动字典攻击的机制。 如果不允许容易受到字典攻击的机制,则该属性包含"true" ; "false"是否允许此类机制。 默认值为"false"
        此常量的值为"javax.security.sasl.policy.nodictionary"
        另请参见:
        常数字段值
      • POLICY_NOANONYMOUS

        public static final String POLICY_NOANONYMOUS
        属性的名称,指定是否允许接受匿名登录的机制。 如果不允许接受匿名登录的机制,则该属性包含"true" ; "false"是否允许此类机制。 默认值为"false"
        此常量的值为"javax.security.sasl.policy.noanonymous"
        另请参见:
        常数字段值
      • POLICY_FORWARD_SECRECY

        public static final String POLICY_FORWARD_SECRECY
        属性的名称,指定是否需要在会话之间实现前向保密的机制。 前向保密意味着分成一个会话不会自动提供进入未来会话的信息。 如果需要在会话之间实现前向保密的机制,则该属性包含"true" ; "false"如果不需要这样的机制。 默认值为"false"
        此常量的值为"javax.security.sasl.policy.forward"
        另请参见:
        常数字段值
      • POLICY_PASS_CREDENTIALS

        public static final String POLICY_PASS_CREDENTIALS
        属性的名称,指定是否需要传递客户端凭据的机制。 如果需要传递客户端凭据的机制,则该属性包含"true" ; "false"如果不需要这样的机制。 默认值为"false"
        此常量的值为"javax.security.sasl.policy.credentials"
        另请参见:
        常数字段值
      • CREDENTIALS

        public static final String CREDENTIALS
        指定要使用的凭据的属性的名称。 该属性包含特定于机制的Java凭据对象。 机制实现可以检查此属性的值以确定它是否是它们支持的类。 该属性可用于向支持委派身份验证的机制提供凭据。
        此常量的值为"javax.security.sasl.credentials"
        另请参见:
        常数字段值
    • 方法详细信息

      • 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如果搜索无法生成非空实例,或null SaslClient实例。

        SaslClientFactory的安全提供程序向表单的JCA安全提供程序框架密钥注册
        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 Reference Implementation另外使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供程序顺序。 这可能与Security.getProviders()返回的提供商的顺序不同。
        参数
        mechanisms - 要尝试的非机制名称列表。 每个都是IANA注册的SASL机制名称。 (例如“GSSAPI”,“CRAM-MD5”)。
        authorizationId - 用于授权的可能为空协议的标识。 如果为null或为空,则服务器从客户端的身份验证凭据派生授权标识。 SASL身份验证成功完成后,将授予指定实体访问权限。
        protocol - 正在执行身份验证的协议的非空字符串名称(例如,“ldap”)。
        serverName - 要进行身份验证的服务器的非null完全限定主机名。
        props - 可能为null的属性集,用于选择SASL机制并配置所选机制的身份验证交换。 例如,如果props包含值为"true"Sasl.POLICY_NOPLAINTEXT属性,则所选SASL机制不能容易受到简单的普通被动攻击。 除了在此类中声明的标准属性之外,还可以包括其他可能特定于机制的属性。 忽略与所选机制无关的属性,包括具有非String键的任何映射条目。
        cbh - SASL机制用于从应用程序/库获取更多信息以完成身份验证的可能为空的回调处理程序。 例如,SASL机制可能需要来自调用者的身份验证ID,密码和域。 使用NameCallback请求身份验证ID。 使用PasswordCallback请求密码。 如果有可供选择的域列表,则使用RealmChoiceCallback请求域,如果必须输入RealmCallback则使用RealmCallback
        结果
        可能为null 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如果搜索无法生成非空实例,或null SaslServer实例。

        SaslServerFactory的安全提供程序向表单的JCA安全提供程序框架密钥注册
        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 Reference Implementation另外使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供程序顺序。 这可能与Security.getProviders()返回的提供商的顺序不同。
        参数
        mechanism - 非null机制名称。 它必须是IANA注册的SASL机制名称。 (例如“GSSAPI”,“CRAM-MD5”)。
        protocol - 正在为其执行身份验证的协议的非空字符串名称(例如,“ldap”)。
        serverName - 服务器的标准主机名,如果服务器未绑定到任何特定主机名,则为null。 如果该机制不允许未绑定的服务器,则将抛出SaslException
        props - 可能为null的属性集,用于选择SASL机制和配置所选机制的身份验证交换。 例如,如果props包含值为"true"Sasl.POLICY_NOPLAINTEXT属性,则所选SASL机制不能容易受到简单的普通被动攻击。 除了在此类中声明的标准属性之外,还可以包括其他可能特定于机制的属性。 忽略与所选机制无关的属性,包括具有非String键的任何映射条目。
        cbh - 可能为null的回调处理程序,供SASL机制用于从应用程序/库中获取更多信息以完成身份验证。 例如,SASL机制可能需要来自调用者的身份验证ID,密码和域。 使用NameCallback请求身份验证ID。 使用PasswordCallback请求密码。 如果有可供选择的域列表,则使用RealmChoiceCallback请求域,如果必须输入RealmCallback则使用RealmCallback
        结果
        可能为null SaslServer使用提供的参数创建。 如果为null,则找不到会生成一个的SaslServerFactory
        异常
        SaslException - 如果由于错误而无法创建 SaslServer