org.ietf.jgss

接口
异常
java.lang.Object
  继承者 org.ietf.jgss.ChannelBinding

public class ChannelBinding
     
extends Object

此类封装关于调用者提供的通道绑定信息的概念。通道绑定用来在上下文创建期间加强对同位体实体进行验证的质量。它们使 GSS-API 调用者能够将安全上下文的创建与相关的特征(如地址)或特定于应用程序的数据进行绑定。

初始化安全上下文的调用者必须确定将在 GSSContext 对象中设置的合适的通道绑定值。接受端必须提供一致的绑定,以便确认接收到的标记具有正确的与通道相关的特征。

在 GSS-API 中是否使用通道绑定是可选的。在初次调用 initSecContext 或执行 acceptSecContext 之前,可以使用 setChannelBinding 方法、针对 GSSContext 来设置 ChannelBinding。除非已将 setChannelBinding 方法用于设置 GSSContext 对象的 ChannelBinding,否则将假定为 null ChannelBinding。

从概念上讲,GSS-API 将初始端和接受端的地址信息与应用程序提供的字节数组连接在一起,构成一个八位字节字符串。验证机制将通过此八位字节字符串计算 MIC,并且将 MIC 绑定到由 GSSContext 接口的 initSecContext 方法发出的上下文创建标记中。同样的绑定将由上下文接受端为其 GSSContext 对象设置,并且在处理 acceptSecContext 方法期间,将用同样的方法来计算 MIC。将把计算出的 MIC 与标记中的值进行比较,如果这两个 MIC 不同,接受端将抛出 GSSException,主代码被设置为 BAD_BINDINGS,并且将不建立上下文。有些验证机制可能在标记(而不仅仅在 MIC )中包括实际的通道绑定数据;因此,应用程序不应将机密数据用作通道绑定组件。

有些验证机制可能会在那些将出现在通道绑定中的地址上施加一些附加限制。例如,有的验证机制会验证通道绑定的初始端地址字段是否包含主机系统的正确网络地址。因此,那些可移植的应用程序必须确保,它们要么能够提供地址字段的正确信息,要么忽略对说明性信息的设置。

从以下版本开始:
1.4

构造方法摘要
ChannelBinding(byte[] appData)
          创建不带任何说明性信息的 ChannelBinding 对象。
ChannelBinding(InetAddress initAddr, InetAddress acceptAddr, byte[] appData)
          使用用户提供的地址信息和数据创建 ChannelBinding 对象。
 
方法摘要
 boolean equals(Object obj)
          比较 ChannelBinding 的两个实例。
 InetAddress getAcceptorAddress()
          获得此通道绑定的接受端的地址。
 byte[] getApplicationData()
          获得此通道绑定的应用程序指定的数据。
 InetAddress getInitiatorAddress()
          获得此通道绑定的初始端地址。
 int hashCode()
          返回此 ChannelBinding 对象的哈希码值。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

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 的两个实例。

覆盖:
Object 中的 equals
参数:
obj - 将与此 ChannelBinding 进行比较的另外一个 ChannelBinding
返回:
如果这两个 ChannelBinding 包括相同的初始端和接受端地址值及应用程序数据,则返回 true。
另请参见:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
返回此 ChannelBinding 对象的哈希码值。

覆盖:
Object 中的 hashCode
返回:
哈希码值
另请参见:
Object.equals(java.lang.Object), Hashtable