EOLE_AUTHENTICATION_CAPABILITIES 枚举 (objidl.h)
指定 CoInitializeSecurity 和 IClientSecurity::SetBlanket (或其帮助程序函数 CoSetProxyBlanket) 中的各种功能。
语法
typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
EOAC_NONE = 0,
EOAC_MUTUAL_AUTH = 0x1,
EOAC_STATIC_CLOAKING = 0x20,
EOAC_DYNAMIC_CLOAKING = 0x40,
EOAC_ANY_AUTHORITY = 0x80,
EOAC_MAKE_FULLSIC = 0x100,
EOAC_DEFAULT = 0x800,
EOAC_SECURE_REFS = 0x2,
EOAC_ACCESS_CONTROL = 0x4,
EOAC_APPID = 0x8,
EOAC_DYNAMIC = 0x10,
EOAC_REQUIRE_FULLSIC = 0x200,
EOAC_AUTO_IMPERSONATE = 0x400,
EOAC_DISABLE_AAA = 0x1000,
EOAC_NO_CUSTOM_MARSHAL = 0x2000,
EOAC_RESERVED1 = 0x4000
} EOLE_AUTHENTICATION_CAPABILITIES;
常量
EOAC_NONE 值: 0 指示未设置任何功能标志。 |
EOAC_MUTUAL_AUTH 值: 0x1 如果指定了此标志,则将忽略它。 某些身份验证服务会自动提供相互身份验证支持。 有关详细信息 ,请参阅 COM 和安全包 。 |
EOAC_STATIC_CLOAKING 值: 0x20 设置静态隐藏。 设置此标志后,DCOM 将使用线程令牌 ((如果存在) 确定客户端的标识)。 但是,如果未) 调用 SetBlanket ,并且每次在代理上调用 CoSetProxyBlanket ,则在每个代理 (第一次调用时确定客户端的标识。 有关静态隐藏的详细信息,请参阅 隐藏。 如果设置了两个隐藏标志,或者当 Schannel 为身份验证服务时设置了任一标志,CoInitializeSecurity 和 IClientSecurity::SetBlanket 将返回错误。 |
EOAC_DYNAMIC_CLOAKING 值: 0x40 设置动态隐藏。 设置此标志后,DCOM 将使用线程令牌 ((如果存在) 确定客户端的标识)。 每次调用代理时,都会检查当前线程令牌,以确定客户端的标识是否已更改 (产生额外的性能成本) 并且仅在必要时再次对客户端进行身份验证。 动态隐藏只能由客户端设置。 有关动态隐藏的详细信息,请参阅 隐藏。 如果设置了两个隐藏标志,或者当 Schannel 为身份验证服务时设置了任一标志,CoInitializeSecurity 和 IClientSecurity::SetBlanket 将返回错误。 |
EOAC_ANY_AUTHORITY 值: 0x80 此标志已过时。 |
EOAC_MAKE_FULLSIC 值: 0x100 导致 DCOM 将完整格式的 Schannel 服务器主体名称作为默认安全协商的一部分发送到客户端。 该名称是从服务器证书中提取的。 有关完整窗体的详细信息,请参阅 主体名称。 |
EOAC_DEFAULT 值: 0x800 告知 DCOM 使用调用 CoInitializeSecurity 中的有效功能。 如果未调用 CoInitializeSecurity,EOAC_NONE 将用于功能标志。 此标志只能由调用 IClientSecurity::SetBlanket 或 CoSetProxyBlanket 的客户端设置。 |
EOAC_SECURE_REFS 值: 0x2 对分布式引用计数调用进行身份验证,以防止恶意用户释放仍在使用的对象。 如果设置了此标志(只能在客户端调用 CoInitializeSecurity 时完成),则 dwAuthnLevel) 中的身份验证级别 (不能设置为 none。 服务器始终对 Release 调用进行身份验证。 设置此标志可防止经过身份验证的客户端释放另一个经过身份验证的客户端的对象。 建议客户端始终设置此标志,尽管性能会因为与额外安全性相关的开销而受到影响。 |
EOAC_ACCESS_CONTROL 值: 0x4 指示 CoInitializeSecurity 的 pSecDesc 参数是指向访问控制对象上的 IAccessControl 接口的指针。 当 DCOM 进行安全检查时,它将调用 IAccessControl::IsAccessAllowed。 此标志仅由服务器设置。 如果同时设置了EOAC_APPID和EOAC_ACCESS_CONTROL标志,CoInitializeSecurity 将返回错误。 |
EOAC_APPID 值: 0x8 指示 CoInitializeSecurity 的 pSecDesc 参数是指向作为 AppID 的 GUID 的指针。 CoInitializeSecurity 函数在注册表中查找 AppID,并从中读取安全设置。 如果设置了此标志,将忽略 CoInitializeSecurity 的所有其他参数,并且必须为零。 只有服务器可以设置此标志。 有关此功能标志的详细信息,请参阅下面的“备注”部分。 如果同时设置了EOAC_APPID和EOAC_ACCESS_CONTROL标志,CoInitializeSecurity 将返回错误。 |
EOAC_DYNAMIC 值: 0x10 保留。 |
EOAC_REQUIRE_FULLSIC 值: 0x200 导致 DCOM 失败 CoSetProxyBlanket 调用,其中 Schannel 主体名称以 fullsic 以外的任何格式指定。 此标志目前仅适用于客户端。 有关完整窗体的详细信息,请参阅 主体名称。 |
EOAC_AUTO_IMPERSONATE 值: 0x400 保留。 |
EOAC_DISABLE_AAA 值: 0x1000 导致将在调用方标识下启动服务器进程的任何激活 (激活即激活器) 失败并出现E_ACCESSDENIED。 此值只能在客户端对 CoInitializeSecurity 的调用中指定,它允许在特权帐户 ((如 LocalSystem) )下运行的应用程序有助于防止其标识用于启动不受信任的组件。 使用 CLSCTX 枚举CLSCTX_ENABLE_AAA的激活调用将允许该调用的激活即激活器激活。 |
EOAC_NO_CUSTOM_MARSHAL 值: 0x2000 使用 DCOM 或 COM+ 时,指定此标志有助于保护服务器安全性。 它减少了执行任意 DLL 的机会,因为它只允许封送在 Ole32.dll、ComAdmin.dll、ComSvcs.dll 或 Es.dll 中实现的 CLSID,或者实现CATID_MARSHALER类别 ID。 任何对系统操作至关重要的服务都应设置此标志。 |
EOAC_RESERVED1 值: 0x4000 |
注解
设置EOAC_APPID标志后, CoInitializeSecurity 将在 AppID 下查找身份验证级别。 如果未找到身份验证级别,它会查找默认的身份验证级别。 如果未找到默认身份验证级别,则会生成默认身份验证级别“连接”。 如果未RPC_C_AUTHN_LEVEL_NONE身份验证级别, CoInitializeSecurity 将在 AppID 下查找访问权限值。 如果未找到,则查找默认访问权限值。 如果未找到,它将生成默认访问权限。 所有其他安全设置的确定方式与旧版应用程序相同。
如果 AppID 为 NULL,CoInitializeSecurity 将在注册表中查找应用程序 .exe 名称,并使用存储在该处的 AppID。 如果 AppID 不存在,则使用计算机默认值。
如果在 capabilities 参数中设置了以下任何标志, IClientSecurity::SetBlanket 方法和 CoSetProxyBlanket 函数将返回错误:EOAC_SECURE_REFS、EOAC_ACCESS_CONTROL、EOAC_APPID、EOAC_DYNAMIC、EOAC_REQUIRE_FULLSIC、EOAC_DISABLE_AAA 或 EOAC_NO_CUSTOM_MARSHAL。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
标头 | objidl.h (包括 Objidl.h) |