上下文要求
上下文要求表示为传递给 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 集模拟来验证客户端的标识。 |