使用x509和多个客户端设置Web服务以及如何区分客户端?

时间:2012-04-13 15:38:09

标签: wcf web-services wcf-security x509certificate x509

遵循这些two links,我能够使用x509认证实施简单的Web服务,并使用经过身份验证的测试客户端来使用该服务。

现在,它看起来像这样:

 --------------
| ServiceA.svc | ------------> Test Client 1
|  -GetData()  |
 --------------

我如何扩展我必须完成的事情:

 --------------
| ServiceA.svc | ------------> Test Client 1
|  -GetData()  | ------------> Test Client 2
|  -SaveData() |
 --------------
| ServiceB.svc |-------------> Test Client 1
|  -GetData()  |
 --------------
| ServiceC.svc |-------------> Test Client 2
|  -SaveData() |
 --------------

我已经设置了服务,并准备好测试客户端2。

以下是我的一些问题:

  • 我是否需要为Test Client 2创建单独的证书?
  • 配置文件/结束点/行为将如何?我认为服务B和C很容易设置,因为它与我现在的基本相同,但现在ServiceA将由两个客户使用,我有点迷失。
  • 如果调用ServiceA,我如何知道哪个客户端正在调用它?我可能想限制他们可以调用的方法(即。TC1只能使用GetData(),TC2只能使用SaveData()),并且能够记录访问方法的人。

如果需要,我可以在配置文件上发布我的内容,但它基本上看起来就是前面提到的两个链接。

1 个答案:

答案 0 :(得分:3)

是的,每个客户都需要一个单独的证书。然后,在操作中,您可以获得其杰出的身份:

ServiceSecurityContext.Current.PrimaryIdentity.Name

最佳做法是将授权流程分开,如下所述: http://msdn.microsoft.com/en-us/magazine/cc948343.aspx