身份验证级别

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

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

无(RPC_C_AUTHN_LEVEL_NONE)

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

默认值(RPC_C_AUTHN_LEVEL_DEFAULT)

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

Connect (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