如何使用安全 RPC?
Posted
技术标签:
【中文标题】如何使用安全 RPC?【英文标题】:How to use Secure RPC? 【发布时间】:2014-02-20 11:43:57 【问题描述】:我正在使用 RPC(远程过程调用)进行本地进程通信。我使用了 ncalrpc 协议,使用 API RpcServerUseProtseqEp、RpcServerRegisterIf、RPCServerListen 编写了一个典型的服务器,并使用 RpcStringBindingCompose、RpcBindingFromStringBinding 编写了一个典型的客户端。到目前为止一切都很好,客户端和服务器使用远程方法进行通信。
现在我正在评估确保此通信安全的选项。我需要主要处理 3 个方面,客户端身份验证、授权和数据私有和完整性。 RpcBindingSetAuthInfo 允许我设置身份验证级别和授权服务以及 SPN。 RPC_C_AUTHN_LEVEL_PKT_PRIVACY 可用于身份验证和加密数据。 1.但我不明白谁真正在做认证以及如何做?
我不明白可以使用 RpcServerRegister 在服务器端注册的 SecurityCallback 如何帮助我检查授权客户端。
我没有得到授权以及如何授权?我不确定在哪些情况下需要授权以及它是如何在 RPC 中实现的。我的应用程序仅在本地计算机上进行通信。
请有人澄清我的疑问。
谢谢,
【问题讨论】:
【参考方案1】:如果您的应用在本地运行,则无需加密 RPC 调用即可。 如果您想使用加密测试 RPC 调用,请确保
-
在服务器上调用 RpcServerRegisterAuthInfo(0, RPC_C_AUTHN_WINNT, 0, 0)
边。
在客户端调用 RpcBindingSetAuthInfo(hRPCBind, 0, RPC_C_AUTHN_LEVEL_PKT_PRIVACY, RPC_C_AUTHN_WINNT, 0, 0),
windows 将处理其余的事情,例如加密、传输。
【讨论】:
以上是关于如何使用安全 RPC?的主要内容,如果未能解决你的问题,请参考以下文章