上下文要求

上下文要求表示为传递给 InitializeSecurityContext (General) AcceptSecurityContext (General) 函数的 位标志的组合。 这些标志以多种方式影响 上下文 。 并非所有标志都适用于所有上下文。 有些仅适用于服务器,其他仅适用于客户端。

调用方使用 InitializeSecurityContext (General) AcceptSecurityContext (General) 调用的 fContextReq 参数指定一组指示所需功能的标志。 函数返回时, pfContextAttr 参数指示已建立上下文的属性。 调用方确定最终上下文属性是否可接受。

InitializeSecurityContext (常规) 请求或返回的标志都以 ISC 为前缀。 从 AcceptSecurityContext (常规) 请求或返回的那些都以 ASC 为前缀。 传递到函数的标志包括 REQ,而返回的标志包括 RET。 例如,ISC_REQ_MUTUAL_AUTH传递给 InitializeSecurityContext (常规) 的相互身份验证的请求标志。 请求相互身份验证的服务器将ASC_REQ_MUTUAL_AUTH传递给 AcceptSecurityContext (General) 。 如果实现了相互身份验证, InitializeSecurityContext (General) 返回ISC_RET_MUTUAL_AUTH, AcceptSecurityContext (General) 返回ASC_RET_MUTUAL_AUTH。 如果调用方请求相互身份验证,但 安全包 指示无法执行身份验证,则调用方必须决定是取消上下文还是继续。

下表介绍了各种上下文要求标志。

标志 描述
委托
传输应用程序中的服务器可以生成新的安全上下文,模拟其他服务器将接受的客户端作为客户端上下文。 仅当设置了MUTUAL_AUTH时,委托才有效。 DELEGATE 目前仅受 Kerberos 支持。 此外,Kerberos 将仅委托给具有 标志TRUSTED_FOR_DELEGATION的服务器。 请勿将此标志用于 受约束委派
MUTUAL_AUTH
通信方必须相互验证其身份。 在不MUTUAL_AUTH的情况下,客户端会向服务器验证其标识。 使用 MUTUAL_AUTH,服务器还必须向客户端验证其标识。
使用 Schannel 安全包时,服务器仅在上次调用 AcceptSecurityContext (Negotiate) 后设置ASC_RET_MUTUAL_AUTH常量。
REPLAY_DETECT
如果已重播数据包, 安全包 会检测重播的数据包,并通知调用方。 使用此标志意味着由 INTEGRITY 标志指定的所有条件。
SEQUENCE_DETECT
必须允许上下文稍后通过消息支持函数检测数据包的无序传递。 使用此标志意味着由 INTEGRITY 标志指定的所有条件。
保密性
上下文可以使用 EncryptMessage (General) DecryptMessage (General) 函数保护传输中的数据。 如果生成的上下文适用于来宾帐户,则 CONFIDENTIALITY 标志不起作用。
USE_SESSION_KEY
必须协商新的 会话密钥
PROMPT_FOR_CREDS
如果客户端是交互式用户,则安全包必须尽可能提示用户提供相应的 凭据
USE_SUPPLIED_CREDS
输入缓冲区中提供了特定于包的凭据信息。 安全包可以使用这些 凭据 对连接进行身份验证。
SAVE_SUPPLIED_CREDS
应使用补充凭据缓存提供的凭据。
ALLOCATE_MEMORY
安全包必须分配内存。 调用方必须最终调用 FreeContextBuffer 函数来释放安全包分配的内存。
USE_DCE_STYLE
调用方需要三回合身份验证 事务
DATAGRAM
必须使用数据报语义。 有关详细信息,请参阅 数据报上下文
CONNECTION
必须使用连接语义。 有关详细信息,请参阅 面向连接的上下文
STREAM
必须使用流语义。 有关详细信息,请参阅 流上下文
EXTENDED_ERROR
如果上下文失败,则必须为对等方生成错误消息。
诚信
可以验证缓冲区完整性,但未启用排序或回复检测。
NO_INTEGRITY
将忽略完整性要求。
识别
当服务器模拟设置了此标志的上下文时,该模拟会产生极其有限的访问权限。 具有 IDENTIT 集的模拟用于验证客户端的身份。