身份验证级别
身份验证级别控制客户端或服务器从其 SSP 获得多少安全性。 通过将适当的RPC_C_AUTHN_LEVEL_xxx 值传递给 coInitializeSecurity 或 CoSetProxyBlanket,dwAuthnLevel 参数来设置身份验证级别。 在握手期间,会比较客户端和服务器的身份验证级别,并且更高级别的安全保护设置用于连接。
不同的身份验证级别如下,从最低级别安全保护到最高级别:
-
无(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)
-
每个数据包都经过签名和加密。 这有助于保护客户端和服务器之间的整个通信。
相关主题