几乎没有客户端在互联网上保护WCF服务的最佳方法

时间:2015-02-11 02:07:53

标签: c# web-services wcf security

我希望通过互联网向一系列客户提供服务。在这个阶段,api非常小,我只希望已知的客户端能够访问该服务。我现在不需要能够识别客户,但我预计随着api的增长,我将需要能够识别客户。

我想知道在短期内确保服务安全的最佳方式是什么,以期从长远来看,我可能希望能够授权客户端访问服务上的特定方法?

我在考虑使用传输安全性 - 即SSL。我是否还应该使用

来使用Message security
clientCredentialType="certificate"

其中每个客户都有自己的证书,可以使用该服务对其进行身份验证吗?

或者我应该只为每个客户提供一个API密钥,它将提供类似的客户差异化水平?

欢迎任何其他建议。

请注意,这是服务接口的服务 - 即不是客户端应用程序。该服务的用户数量将受到限制,我预计不需要在数据级别应用安全性,更多的是在方法访问级别。

3 个答案:

答案 0 :(得分:1)

给每个人一个密钥,他们必须提交一个带有他们请求的SHA签名(他们正在传入的一些/所有参数的编码版本,所以你也可以做SHA并检查它是否匹配)。

答案 1 :(得分:1)

现在最简单的方法是将SSL添加到IIS主机,然后将客户端更改为通过HTTPS连接,就像这样......

      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>

答案 2 :(得分:0)

您可以使用自定义用户名/密码身份验证来验证用户身份,也可以使用AD身份验证来控制可以使用该服务的人员。

现在最好的解决方案是,因为您不想识别用户是使用自定义用户名/密码身份验证,现在允许每个用户。将来当您想要识别用户时,请更改代码并进行验证。

请参阅https://msdn.microsoft.com/en-us/library/aa702565(v=vs.110).aspx。在验证功能中,暂时不要抛出任何异常