1

通过这两个 链接,我能够实现一个具有 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。

所以这是我的一些问题:

  • 我需要为测试客户端 2 创建单独的证书吗?
  • 配置文件/端点/行为会是什么样子?我认为服务 B 和 C 很容易设置,因为它与我现在拥有的基本相同,但是现在两个客户端都将使用 ServiceA,我有点迷茫。
  • 如果调用 ServiceA,我怎么知道是哪个客户端调用它?我可能想限制他们可以调用的方法(即 TC1 只能使用 GetData(),TC2 只能使用 SaveData()),并且能够记录谁在访问这些方法。

如果需要,我可以在配置文件上发布我所拥有的内容,但它看起来基本上是上述两个链接所拥有的。

4

1 回答 1

2

是的,每个客户都需要一个单独的证书。然后从操作中你可以得到它的显着身份:

ServiceSecurityContext.Current.PrimaryIdentity.Name

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

于 2012-04-13T15:54:05.267 回答