RPC_BINDING_HANDLE_SECURITY_V1_A 结构 (rpcdce.h)

RPC_BINDING_HANDLE_SECURITY_V1 结构包含用于创建 RPC 绑定句柄的基本安全选项。

语法

typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_A {
  unsigned long             Version;
  unsigned char             *ServerPrincName;
  unsigned long             AuthnLevel;
  unsigned long             AuthnSvc;
  SEC_WINNT_AUTH_IDENTITY_A *AuthIdentity;
  RPC_SECURITY_QOS          *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1_A, *PRPC_BINDING_HANDLE_SECURITY_V1_A;

成员

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 结构,其中包含绑定句柄的安全服务质量设置。

注意 有关 RPC 支持的身份验证服务的列表,请参阅 Authentication-Service 常量
 

注解

如果此结构未传递给 RpcBindingCreate(即 RpcBindingCreateSecurity 参数设置为 NULL),则假定采用以下默认安全行为:

  • 对于协议序列 ncalrpc (本地 RPC) ,RPC 将使用传输级安全性。 这意味着 RPC 将使用 Windows 内核提供的安全机制来提供安全性,而 RPC 不会对服务器进行身份验证,因为它使用当前线程标识进行连接。 在这种情况下,标识跟踪是静态的,模拟类型设置为“模拟”,身份验证级别设置为“隐私”。
  • 对于协议序列ncacn_np,RPC 还将使用传输级安全性。 如果调用是远程的,则 RPC 使用 Windows 文件系统重定向程序提供的安全机制,并且没有相互身份验证。 在这种情况下,标识是当前线程标识,标识跟踪状态为静态,模拟类型设置为“模拟”,身份验证级别由远程计算机的策略确定。

    如果调用是本地的,则 RPC 使用命名管道文件系统 (NPFS) 提供的安全机制,并且也没有相互身份验证。 在这种情况下,标识是当前线程标识或通过服务器的“net use”命令建立的任何标识。 标识跟踪状态为动态,模拟类型设置为“模拟”,身份验证级别设置为“隐私”。

  • 对于ncacn_ip_tcp、ncacn_ip_udp和ncacn_http的协议序列,当 Security 设置为 NULL 时,不使用任何安全性。 服务器不会执行模拟,所有数据都将以明文形式发送。 若要为数据提供最大保护,应用程序必须始终提供安全数据。

下表汇总了 RpcBindingCreateSecurity 参数设置为 NULL 时不同协议序列的默认安全设置。

默认安全设置 ncalrpc 本地ncacn_np 远程ncacn_np ncacn_ip_tcp、ncacn_ip_udp 和 ncacn_http
安全机制 Windows 内核 NPFS 文件系统重定向程序
“身份验证级别” 隐私 隐私 依赖于服务器策略
相互身份验证?
模拟类型 Impersonate Impersonate Impersonate N/A
标识跟踪类型 Static 动态 静态 N/A
仅有效? 不适用 N/A
呼叫标识 当前线程 当前线程 当前线程或“net use”设置 N/A
 
注意 如果通过调用 RpcBindingFromStringBinding API 来创建绑定句柄,则在没有特定安全设置的情况下,ncalrpc 的默认标识跟踪是动态的。

如果通过调用 RpcBindingCreate API 创建快速绑定句柄,则在没有特定安全设置的情况下,ncalrpc 的默认标识跟踪是静态的。

如果在应用程序中切换这两个 API,应注意这两个 API 之间的差异。

创建绑定句柄后, RpcBindingSetAuthInfoRpcBindingSetAuthInfoEx API 可用于更改使用此结构设置的绑定句柄设置。

 

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 rpcdce.h (包括 Rpc.h)

另请参阅

RPC_BINDING_HANDLE

RpcBindingBind

RpcBindingCreate