软件包  org.ietf.jgss

Class ChannelBinding



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

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

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

    从概念上讲,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 - 上下文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实例。
        重写:
        equalsObject
        参数
        obj - 另一个ChannelBinding来比较这个
        结果
        如果两个ChannelBinding包含与启动器和接收器地址以及应用程序数据相同的值,则为true。
        另请参见:
        Object.hashCode()HashMap