安全毛毯协商
安全毯是一组值,用于描述应用于进程中所有代理或仅应用于特定接口代理的安全设置。 安全毯包括以下值:
- 身份验证服务
- 授权服务
- 主体名称
- 身份验证级别
- 模拟级别
- 身份验证标识
- 能力
- 访问控制列表 (ACL) (仅限服务器)
安全毯协商是 COM 在创建代理时用于选择代理的安全设置的过程。 此过程涉及将服务器的安全毛毯与客户端的安全毛毯进行比较,并使用这些值为代理创建适当的默认安全毛毯。 以下段落说明了客户端和服务器的安全毯来自何处,并介绍了 COM 如何使用客户端的安全毯和服务器的安全毯协商代理的安全毯。
客户端和服务器可以分别调用 CoInitializeSecurity 来指定其各自的安全毯子。 如果应用程序未显式调用 CoInitializeSecurity,COM 将使用适当的默认值隐式调用应用程序。 有关这些默认值的详细信息,请参阅 COM 安全默认值。
一些参数用于 CoInitializeSecurity 当应用程序是服务器时应用,一些参数在应用程序是客户端时应用。 当应用程序充当服务器时,这些参数是相关的:ACL、身份验证服务/授权服务/主体名称元组的列表和身份验证级别。 服务器调用 CoInitializeSecurity(无论是隐式的还是显式的),决定了服务器的安全毛毯,该毛毯保持不变。
当应用程序充当客户端时,传递给 CoInitializeSecurity 的以下值是相关的:身份验证级别、模拟级别、身份验证标识和功能。 客户端对 CoInitializeSecurity 的隐式或显式调用 指示客户端想要的安全毯子。
创建代理时,COM 使用服务器的安全毛毯和客户端的安全毛毯指定的值来协商适合代理的默认安全毛毯。 COM 选取一个在客户端和服务器上工作的身份验证服务。 选择授权服务和主体名称来处理身份验证服务。 对于身份验证级别,COM 选择客户端和服务器指定的身份验证级别越高。 COM 选择的模拟级别和功能是由客户端指定的。 身份验证标识是由客户端为所选身份验证服务指定的标识。
计算默认安全毛毯后,其值将分配给新创建的代理。 客户端可以通过调用 IClientSecurity::SetBlanket来替代代理的安全设置。 未协商 SetBlanket 指定的值;它们只是分配给指定的代理。 但是,如果将默认参数(如RPC_C_IMP_LEVEL_DEFAULT)传递给 SetBlanket,COM 将使用前面描述的安全毛毯协商算法来计算默认参数。
相关主题
-
COM 中的 安全性