RPC_BINDING_HANDLE_SECURITY_V1_W 结构 (rpcdce.h)
RPC_BINDING_HANDLE_SECURITY_V1 结构包含用于创建 RPC 绑定句柄的基本安全选项。
语法
typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_W {
unsigned long Version;
unsigned short *ServerPrincName;
unsigned long AuthnLevel;
unsigned long AuthnSvc;
SEC_WINNT_AUTH_IDENTITY_W *AuthIdentity;
RPC_SECURITY_QOS *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1_W, *PRPC_BINDING_HANDLE_SECURITY_V1_W;
成员
Version
此结构的版本。 对于 RPC_BINDING_HANDLE_SECURITY_V1 必须将其设置为 1。
ServerPrincName
指向包含绑定句柄引用的服务器主体名称的字符串的指针。 名称的内容及其语法由正在使用的身份验证服务定义。
AuthnLevel
要对此绑定句柄进行的远程过程调用执行的身份验证级别。 有关 RPC 支持的身份验证级别的列表,请参阅 身份验证级别常量。
如果 AuthnSvc 设置为 RPC_C_AUTHN_NONE,则此成员也必须同样设置为 RPC_C_AUTHN_NONE。
AuthnSvc
绑定时要使用的身份验证服务。
指定RPC_C_AUTHN_NONE以关闭使用绑定句柄进行的远程过程调用的身份验证。
如果指定了RPC_C_AUTHN_DEFAULT,则 RPC 运行时库对使用绑定句柄进行的远程过程调用使用 RPC_C_AUTHN_WINNT 身份验证服务。
如果 AuthnLevel 设置为 RPC_C_AUTHN_NONE,则此成员也必须同样设置为 RPC_C_AUTHN_NONE。
AuthIdentity
SEC_WINNT_AUTH_IDENTITY 结构,其中包含适用于所选身份验证和授权服务的客户端身份验证和授权凭据。
SecurityQos
RPC_SECURITY_QOS 结构,其中包含绑定句柄的安全服务质量设置。
注解
如果此结构未传递到 RpcBindingCreate(即 RpcBindingCreate的安全参数设置为 NULL),则假定存在以下默认安全行为:
- 对于协议序列 ncalrpc (本地 RPC) ,RPC 将使用传输级别安全性。 这意味着 RPC 将使用 Windows 内核提供的安全机制来提供安全性,而 RPC 不会对服务器进行身份验证,因为它使用当前线程标识进行连接。 在这种情况下,标识跟踪是静态的,模拟类型设置为“模拟”,身份验证级别设置为“隐私”。
- 对于协议序列ncacn_np,RPC 还将使用传输级别安全性。 如果调用是远程的,则 RPC 使用 Windows 文件系统重定向程序提供的安全机制,并且没有相互身份验证。 在这种情况下,标识是当前线程标识,标识跟踪状态为静态,模拟类型设置为“模拟”,身份验证级别由远程计算机的策略确定。
如果调用是本地的,RPC 将使用命名管道文件系统 (NPFS) 提供的安全机制,并且也没有相互身份验证。 在这种情况下,标识是当前线程标识或通过服务器的“net use”命令建立的任何标识。 标识跟踪状态是动态的,模拟类型设置为“模拟”,身份验证级别设置为“隐私”。
- 对于ncacn_ip_tcp、ncacn_ip_udp和ncacn_http的协议序列 ,当“ 安全性”设置为 NULL 时,不使用安全性。 服务器不会执行模拟,所有数据将以明文形式发送。 若要为数据提供最大的保护,应用程序必须始终提供安全数据。
下表汇总了 RpcBindingCreate 的安全参数设置为 NULL 时不同协议序列的默认安全设置。
默认安全设置 | ncalrpc | 本地ncacn_np | remote ncacn_np | ncacn_ip_tcp、ncacn_ip_udp和ncacn_http |
---|---|---|---|---|
安全机制 | Windows 内核 | NPFS | 文件系统重定向程序 | 无 |
“身份验证级别” | 隐私 | 隐私 | 依赖于服务器策略 | 无 |
相互身份验证? | 否 | 否 | 否 | 否 |
模拟类型 | Impersonate | Impersonate | Impersonate | N/A |
标识跟踪类型 | Static | 动态 | 静态 | N/A |
仅有效? | 是 | 否 | 不适用 | 不可用 |
呼叫标识 | 当前线程 | 当前线程 | 当前线程或“net use”设置 | 不可用 |
如果通过调用 RpcBindingCreate API 创建快速绑定句柄,则在没有特定安全设置的情况下,ncalrpc 的默认标识跟踪是静态的。
如果在应用程序中切换这两个 API,应注意这两个 API 之间的差异。
创建绑定句柄后,可以使用 RpcBindingSetAuthInfo 和 RpcBindingSetAuthInfoEx API 更改使用此结构设置绑定句柄的设置。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
标头 | rpcdce.h (包括 Rpc.h) |