上下文要求

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

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

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

下表描述了各种上下文要求标志。

描述
委托
传输应用程序中的服务器可以生成新的安全上下文,模拟其他服务器将接受的客户端作为客户端的上下文。 仅当设置了MUTUAL_AUTH时,委托才有效。 委托目前仅受 Kerberos支持。 此外,Kerberos 将仅委托给具有标志TRUSTED_FOR_DELEGATION的服务器。 不要将此标志用于 约束委派
MUTUAL_AUTH
通信方必须相互验证其身份。 如果不MUTUAL_AUTH,客户端会向服务器验证其标识。 使用MUTUAL_AUTH,服务器还必须向客户端验证其标识。
使用 Schannel 安全包时,服务器仅在证书映射成功完成后,才会在上次调用 AcceptSecurityContext (Negotiate)中设置 ASC_RET_MUTUAL_AUTH 常量。
REPLAY_DETECT
安全包 检测重播数据包,并在重播数据包后通知调用方。 使用此标志意味着完整性标志指定的所有条件。
SEQUENCE_DETECT
必须允许上下文通过消息支持函数检测数据包的无序传递。 使用此标志意味着完整性标志指定的所有条件。
保密性
上下文可以使用 EncryptMessage(常规)DecryptMessage(常规) 函数在传输过程中保护数据。 如果生成的上下文用于来宾帐户,则 CONFIDENTIALITY 标志不起作用。
USE_SESSION_KEY
必须协商新的 会话密钥
PROMPT_FOR_CREDS
如果客户端是交互式用户,安全包必须尽可能提示用户输入相应的 凭据
USE_SUPPLIED_CREDS
特定于包的凭据信息在输入缓冲区中可用。 安全包可以使用这些 凭据 对连接进行身份验证。
SAVE_SUPPLIED_CREDS
提供的凭据应使用补充凭据进行缓存。
ALLOCATE_MEMORY
安全包 必须分配内存。 调用方最终必须调用 FreeContextBuffer 函数来释放安全包分配的内存。
USE_DCE_STYLE
调用方需要三回合身份验证 事务
数据报
必须使用 Datagram 语义。 有关详细信息,请参阅 Datagram 上下文
连接
必须使用连接语义。 有关详细信息,请参阅 Connection-Oriented 上下文

必须使用流语义。 有关详细信息,请参阅 流上下文
EXTENDED_ERROR
如果上下文失败,则必须生成对等方的错误消息。
正直
可以验证缓冲区完整性,但未启用排序或回复检测。
NO_INTEGRITY
忽略 完整性 要求。
识别
当服务器模拟具有此标志集的上下文时,该模拟将产生极其有限的访问。 使用 IDENTIT 集模拟来验证客户端的标识。