java.lang.Object
org.ietf.jgss.ChannelBinding
这个类封装了调用者提供的通道绑定信息的概念。通道绑定用于在上下文建立期间加强对对等体身份验证的质量。它们使GSS-API调用者能够将安全上下文的建立绑定到相关特征,如地址或应用程序特定数据。
发起安全上下文的调用者必须确定在GSSContext对象中设置适当的通道绑定值。接收者必须提供相同的绑定,以验证接收到的令牌是否具有正确的与通道相关的特征。
在GSS-API中使用通道绑定是可选的。可以使用GSSContext
的setChannelBinding
方法为GSSContext设置ChannelBinding,在执行initSecContext
或acceptSecContext
的第一次调用之前。除非使用setChannelBinding
方法为GSSContext对象设置了ChannelBinding,否则将假定为null
ChannelBinding。
在概念上,GSS-API将发起者和接收者的地址信息以及应用程序提供的字节数组连接起来形成一个八位字符串。机制在此八位字符串上计算MIC,并将MIC绑定到由GSSContext
接口的initSecContext
方法发出的上下文建立令牌。接收者为其GSSContext
对象设置相同的绑定,并在处理acceptSecContext
方法时以相同的方式计算MIC。计算得到的MIC与令牌中的MIC进行比较,如果MIC不同,接受方将抛出一个主代码设置为BAD_BINDINGS
的GSSException
,并且上下文将不会建立。一些机制可能在令牌中包含实际的通道绑定数据(而不仅仅是MIC);因此应用程序不应将机密数据用作通道绑定组件。
个别机制可能对可能出现在通道绑定中的地址施加额外的约束。例如,机制可能验证通道绑定的发起者地址字段是否包含主机系统的正确网络地址。因此,可移植应用程序应确保它们提供正确的地址字段信息,或者省略设置寻址信息。
- 自版本:
- 1.4
-
Constructor Summary
ConstructorDescriptionChannelBinding
(byte[] appData) 创建一个没有任何地址信息的ChannelBinding对象。ChannelBinding
(InetAddress initAddr, InetAddress acceptAddr, byte[] appData) 创建一个带有用户提供的地址信息和数据的ChannelBinding对象。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
比较两个ChannelBinding实例。获取此通道绑定的接收者地址。byte[]
获取此通道绑定的应用程序指定数据。获取此通道绑定的发起者地址。int
hashCode()
返回此ChannelBinding对象的哈希码值。
-
Constructor Details
-
ChannelBinding
创建一个带有用户提供的地址信息和数据的ChannelBinding对象。可以对任何应用程序不想指定的字段使用null
值。- 参数:
-
initAddr
- 上下文发起者的地址。可以提供null
值以指示应用程序不想设置此值。 -
acceptAddr
- 上下文接收者的地址。可以提供null
值以指示应用程序不想设置此值。 -
appData
- 作为通道绑定的一部分使用的应用程序提供的数据。可以提供null
值以指示应用程序不想设置此值。
-
ChannelBinding
public ChannelBinding(byte[] appData) 创建一个没有任何地址信息的ChannelBinding对象。- 参数:
-
appData
- 作为通道绑定的一部分使用的应用程序提供的数据。
-
-
Method Details
-
getInitiatorAddress
获取此通道绑定的发起者地址。- 返回:
-
发起者的地址。如果地址尚未设置,则返回
null
。
-
getAcceptorAddress
获取此通道绑定的接收者地址。- 返回:
- 接收者的地址。如果地址尚未设置,则返回null。
-
getApplicationData
public byte[] getApplicationData()获取此通道绑定的应用程序指定数据。- 返回:
-
作为ChannelBinding一部分使用的应用程序数据。如果未为通道绑定指定应用程序数据,则返回
null
。
-
equals
比较两个ChannelBinding实例。 -
hashCode
public int hashCode()返回此ChannelBinding对象的哈希码值。
-