如何使用安全RPC?

时间:2014-02-20 11:43:58

标签: security winapi ipc rpc

我正在使用RPC(远程过程调用)进行本地进程通信。我使用了ncalrpc协议,使用API​​ RpcServerUseProtseqEp,RpcServerRegisterIf,RPCServerListen和使用RpcStringBindingCompose,RpcBindingFromStringBinding的典型客户端编写了一个典型的服务器。所有看起来都很好,客户端和服务器使用远程方法进行通信。

现在我正在评估使这种通信安全的选项。我需要主要关注3个方面,客户端身份验证,授权和数据私有&完整性。 RpcBindingSetAuthInfo允许我设置身份验证级别和授权服务以及SPN。 RPC_C_AUTHN_LEVEL_PKT_PRIVACY可用于身份验证和加密数据。 但我不明白谁真正进行了身份验证以及如何进行身份验证?

  1. 我不明白如何使用RpcServerRegister在服务器端注册的SecurityCallback帮助我检查授权客户端。

  2. 我没有得到谁的授权以及如何?我不确定在哪些情况下需要授权以及如何在RPC中实现授权。我的应用程序仅在本地计算机上进行通信。

  3. 有人请澄清我的疑问。

    谢谢,

1 个答案:

答案 0 :(得分:0)

如果你的应用程序在本地运行,没有加密RPC调用就没问题。 如果您想使用加密测试RPC调用,请确保

  1. 在服务器上调用RpcServerRegisterAuthInfo(0,RPC_C_AUTHN_WINNT,0,0) 侧。
  2. 在客户端调用RpcBindingSetAuthInfo(hRPCBind,0,RPC_C_AUTHN_LEVEL_PKT_PRIVACY,RPC_C_AUTHN_WINNT,0,0),
  3. windows将处理其余的事情,例如加密,传输。