如何在互联网上为少数客户端保护WCF服务的最佳方法

5
我希望将一个服务暴露给一些互联网客户端。在当前阶段,api非常小,我只想让已知的客户端能够访问该服务。现在我不需要识别客户端,但是随着api的增长,我预计以后需要识别客户端。
我想知道短期内保护服务的最佳方法,同时考虑到长期可能需要授权客户端访问特定的服务方法?
我考虑使用传输安全-即SSL。我还应该考虑使用消息安全吗?
clientCredentialType="certificate"

每个客户端都将拥有自己的证书,用于与服务进行身份验证。是否应该为每个客户端提供API密钥,以提供类似的客户端区分级别?

欢迎提出任何其他建议。

请注意,这是一个面向服务的接口,而不是客户端应用程序。服务的用户数量将有限,并且我不预见需要在数据级别应用安全性,更多是在方法访问级别应用安全性。


“安全”是什么意思?你的攻击者叫做Eve、Mallory还是其他人?自然而然,最简单的通用解决方案之一是在SSL上使用Kerberos。 - Aron
3个回答

1

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

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

这将提供安全性,但不会帮助OP确保只有指定的客户端可以使用该服务。 - DeanOC

1

给他们每个人一个密钥,然后他们必须在请求中提交一个SHA签名(对他们传递的某些或全部参数进行编码的版本,这样您也可以进行SHA并检查是否匹配)。


0

您可以使用自定义用户名/密码身份验证来验证用户或使用AD身份验证来控制谁可以使用服务。

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

请参考https://msdn.microsoft.com/en-us/library/aa702565(v=vs.110).aspx。在验证函数中,现在不要抛出任何异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接