首页 理论教育 会话建立请求-DOA/Handle技术与应用

会话建立请求-DOA/Handle技术与应用

时间:2023-11-23 理论教育 版权反馈
【摘要】:会话建立请求的消息体定义如下:<SessionAttributes>包含一个4 字节的无符号整数和会话属性列表。该整数表示列表里的会话属性的数目。客户端可以使用该服务器的公共密钥来加密会话密钥,并将其由后续SESSION_EXCHANGEKEY 请求发送到服务器。这个4 字节的无符号整数可以用于指定字节串的字节数。<TimeOut>:是一个4 字节的无符号整数,指定会话以秒为单位的超时时间。服务器必须阻止任何未经授权的请求更改会话属性。

会话建立请求-DOA/Handle技术与应用

客户端通过一个有SESSION_SETUP 的请求建立与Handle 服务器的会话。客户端发出的SESSION_SETUP 请求也可以用于更新与现有会话中关联的任何状态信息。SESSION_SETUP 请求的消息头须把<OpCode>设置为OC_SESSION_SETUP,同时把<ResponseCode>设置为0。

会话建立请求的消息体定义如下:

<SessionAttributes>包含一个4 字节的无符号整数和会话属性列表。该整数表示列表里的会话属性的数目。 可能的会话属性包括<HS_SESSION_IDENTITY>、<HS_SESSION_TIMEOUT>和<HS_SESSION_KEY_EXCHANGE>。每个属性的定义如下:

<Key>是一个UTF-8 编码的字符串常量——HS_SESSION_IDENTITY。<Handle>:Handle 码,是一个UTF-8 编码的字符串。<ValueIndex>:是存储<Key>值的Handle 值的索引。公钥由服务器保存并用来对客户端进行身份认证。

<Key>是一个 UTF-8 编码的字符串常量——HS_SESSION_KEY_EXCHANGE。<KeyExchangeData>为如下元素之一:<ClientCipher KeyExchange>、<HdlCipher KeyExchange>、<ServerCipher KeyExchange>和<DiffieHellman KeyExchange>。它们的定义如下:

<Key>是一个 UTF-8 编码的字符串常量——CLIENT_CIPHER。<PubKey>:公钥数据,由客户端提供,被服务器用来给会话加密。

<Key>是一个UTF-8 编码的字符串常量——HDL_CIPHER。(www.xing528.com)

<ExchangeKeyHdl>和<ExchangeKeyIndex>:是一个UTF-8 编码的字符串和一个4 字节的无符号整数,两个字段内容指向一个包含客户端公钥的Handle 值。客户端的公钥将被服务器用于加密会话密钥,然后服务器再将加密后的密钥发送到客户端。

<Key>是一个 UTF-8 编码的字符串常量——SERVER_CIPHER。<Key>告知服务器客户端将负责生成会话密钥。服务器必须在会话响应中提供公钥,并将<ResponseCode>设置为RC_SESSION_EXCHANGEKEY。客户端可以使用该服务器的公共密钥来加密会话密钥,并将其由后续SESSION_EXCHANGEKEY 请求发送到服务器。

<Key>是一个UTF-8 编码的字符串常量——DIFFIE_HELLMAN,<DHParams>:被用作Diffie-Hellman 算法的输入。它由可变长度的三个大整数构成。每个大整数被编码为4个字节的无符号整数,该整数后跟一个字节串。该字节串包含大整数本身。这个4 字节的无符号整数可以用于指定字节串的字节数。

<Key>是一个UTF-8 编码的字符串常量——HS_SESSION_TIMEOUT。<TimeOut>:是一个4 字节的无符号整数,指定会话以秒为单位的超时时间。

如果同一个会话属性在<SessionAttribute>字段多次列出,会被视为一个错误。发生这种情况后,服务器将反馈错误信息并把<ResponseCode>的值设置为RC_PROTOCOL_ERROR。

SESSION_SETUP_REQUEST 可以用来更改任何已建立会话的会话属性。如果<SessionId>不等于0 时,并与已建立会话中的一个<SessionId>相匹配,就会用来更新现有会话属性。服务器必须阻止任何未经授权的请求更改会话属性。例如,一个加密的会话只能在其消息凭证中具有消息认证码并经过验证,SESSION_SETUP_REQUEST 才能变成一个未加密的会话。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈