软件包  org.ietf.jgss

Class ChannelBinding


  • public class ChannelBindingextends Object
    该类封装了调用者提供的通道绑定信息的概念。 通道绑定用于增强在上下文建立期间提供对等实体认证的质量。 它们使GSS-API调用程序能够将安全上下文的建立绑定到相关特性(如地址或特定于应用程序的数据)。

    启动安全上下文的调用者必须确定要在GSSContext对象中设置的适当通道绑定值。 接受者必须提供相同的绑定,以验证收到的令牌是否具有正确的通道相关特征。

    在GSS-API中使用通道绑定是可选的。 在第一次调用initSecContextacceptSecContext之前,可以使用setChannelBinding方法为GSSContext设置ChannelBinding。 除非已使用setChannelBinding方法为GSSContext对象设置ChannelBinding, null将假定为ChannelBinding( null

    从概念上讲,GSS-API连接发起者和接受者地址信息,以及应用程序提供的字节数组以形成八位字符串。 该机制计算该八位字节串的MIC,并将MIC绑定到GSSContext接口的initSecContext方法发出的上下文建立令牌。 对于其GSSContext对象,上下文接受器设置相同的绑定,并且在处理acceptSecContext方法期间,以相同的方式计算MIC。 将计算出的MIC与令牌中的MIC进行比较,如果MIC不同,则接受将抛出GSSException ,主代码设置为BAD_BINDINGS ,并且不会建立上下文。 一些机制可能包括令牌中的实际通道绑定数据(而不仅仅是MIC); 因此,应用程序不应将机密数据用作通道绑定组件。

    各个机制可能会对可能出现在通道绑定中的地址施加额外的约束。 例如,机制可以验证信道绑定的发起者地址字段包含主机系统的正确网络地址。 因此,便携式应用程序应确保它们为地址字段提供正确的信息,或省略寻址信息的设置。

    从以下版本开始:
    1.4
    • 构造方法详细信息

      • ChannelBinding

        public ChannelBinding​(InetAddress initAddr,                      InetAddress acceptAddr,                      byte[] appData)
        使用用户提供的地址信息和数据创建ChannelBinding对象。 null值可用于应用程序不想指定的任何字段。
        参数
        initAddr - 上下文启动器的地址。 可以提供null值以指示应用程序不想设置此值。
        acceptAddr - 上下文接受器的地址。 可以提供null值以指示应用程序不想设置此值。
        appData - 应用程序提供的数据将用作通道绑定的一部分。 可以提供null值以指示应用程序不想设置此值。
      • ChannelBinding

        public ChannelBinding​(byte[] appData)
        创建一个没有任何寻址信息的ChannelBinding对象。
        参数
        appData - 应用程序提供的数据将用作通道绑定的一部分。
    • 方法详细信息

      • getInitiatorAddress

        public InetAddress getInitiatorAddress()
        获取此通道绑定的启动器地址。
        结果
        发起人的地址。 如果尚未设置地址,则返回null
      • getAcceptorAddress

        public InetAddress getAcceptorAddress()
        获取此通道绑定的接受者地址。
        结果
        接受者的地址。 如果尚未设置地址,则返回null。
      • getApplicationData

        public byte[] getApplicationData()
        获取此通道绑定的应用程序指定数据。
        结果
        应用程序数据用作ChannelBinding的一部分。 如果没有为通道绑定指定应用程序数据,则返回null
      • equals

        public boolean equals​(Object obj)
        比较ChannelBinding的两个实例。
        重写:
        equals在类 Object
        参数
        obj - 另一个ChannelBinding来比较这个
        结果
        如果两个ChannelBinding包含启动器和接受器地址以及应用程序数据的相同值,则返回true。
        另请参见:
        Object.hashCode()HashMap