Package org.ietf.jgss

Class ChannelBinding

java.lang.Object
org.ietf.jgss.ChannelBinding

public class ChannelBinding extends Object
这个类封装了调用者提供的通道绑定信息的概念。通道绑定用于在上下文建立期间加强对对等体身份验证的质量。它们使GSS-API调用者能够将安全上下文的建立绑定到相关特征,如地址或应用程序特定数据。

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

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

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

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

自版本:
1.4
  • Constructor Details

    • ChannelBinding

      public ChannelBinding(InetAddress initAddr, InetAddress acceptAddr, byte[] appData)
      创建一个带有用户提供的地址信息和数据的ChannelBinding对象。可以对任何应用程序不想指定的字段使用null值。
      参数:
      initAddr - 上下文发起者的地址。可以提供null值以指示应用程序不想设置此值。
      acceptAddr - 上下文接收者的地址。可以提供null值以指示应用程序不想设置此值。
      appData - 作为通道绑定的一部分使用的应用程序提供的数据。可以提供null值以指示应用程序不想设置此值。
    • ChannelBinding

      public ChannelBinding(byte[] appData)
      创建一个没有任何地址信息的ChannelBinding对象。
      参数:
      appData - 作为通道绑定的一部分使用的应用程序提供的数据。
  • Method Details

    • 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
      返回:
      如果两个ChannelBinding包含相同的发起者和接收者地址以及应用程序数据的值,则返回true。
      参见:
    • hashCode

      public int hashCode()
      返回此ChannelBinding对象的哈希码值。
      覆盖:
      hashCode 在类 Object
      返回:
      一个哈希码值
      参见: