“身份验证级别”

身份验证级别控制客户端或服务器从其 SSP 获得多少安全性。 通过通过 dwAuthnLevel 参数将适当的RPC_C_AUTHN_LEVEL_xxx值传递给 CoInitializeSecurityCoSetProxyBlanket 来设置身份验证级别。 在握手期间,客户端和服务器的身份验证级别进行比较,而更高级别的安全保护设置用于连接。

不同的身份验证级别如下所述,从最低级别安全保护到最高级别:

无 (RPC_C_AUTHN_LEVEL_NONE)

在客户端与服务器之间的通信期间,不会执行身份验证。 将忽略所有安全设置。 仅当身份验证服务级别RPC_C_AUTHN_NONE时,才能设置此 身份验证级别

默认 (RPC_C_AUTHN_LEVEL_DEFAULT)

COM 使用其正常的安全全面协商选择身份验证级别。 它永远不会选择“无”的身份验证级别。

连接 (RPC_C_AUTHN_LEVEL_CONNECT)

正常身份验证握手发生在客户端和服务器之间,并且建立会话密钥,但该密钥永远不会用于客户端和服务器之间的通信。 握手后的所有通信都是不安全的。

呼叫 (RPC_C_AUTHN_LEVEL_CALL)

仅对每个调用开头的标头进行签名。 客户端和服务器之间交换的其余数据既未签名也不加密。 大多数 SSP 不支持此身份验证级别,并无提示地将其提升为数据包。

数据包 (RPC_C_AUTHN_LEVEL_PKT)

每个数据包的标头已签名,但未加密。 数据包本身未签名或加密。

数据包完整性 (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)

每个数据包全部签名,但未加密。 由于所有数据都由发件人签名,因此收件人可以确定在传输过程中未篡改任何数据。

数据包隐私 (RPC_C_AUTHN_LEVEL_PKT_PRIVACY)

对每个数据包进行签名和加密。 这有助于保护客户端和服务器之间的整个通信。

AuthenticationLevel

LegacyAuthenticationLevel