2014-02-20 66 views
0

我正在使用RPC(远程过程调用)进行本地进程通信。我已经使用ncalrpc协议,使用API​​ RpcServerUseProtseqEp,RpcServerRegisterIf,RPCServerListen和使用RpcStringBindingCompose,RpcBindingFromStringBinding的典型客户端编写了一个典型的服务器。目前为止,客户端和服务器都使用远程方法进行通信。如何使用安全RPC?

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

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

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

有人请澄清我的疑问。

感谢,

回答

0

如果您的应用程序在本地运行,它的确定,无加密的RPC调用。 如果你想测试与加密RPC调用,使在服务器端 肯定

  1. 呼叫RpcServerRegisterAuthInfo(0,0,RPC_C_AUTHN_WINNT,0)。
  2. 呼叫RpcBindingSetAuthInfo(hRPCBind,0,RPC_C_AUTHN_LEVEL_PKT_PRIVACY,RPC_C_AUTHN_WINNT,0,0)上的客户端,

窗口将处理的其余部分,例如加密,传输。