我希望通过互联网向一系列客户提供服务。在这个阶段,api非常小,我只希望已知的客户端能够访问该服务。我现在不需要能够识别客户,但我预计随着api的增长,我将需要能够识别客户。
我想知道在短期内确保服务安全的最佳方式是什么,以期从长远来看,我可能希望能够授权客户端访问服务上的特定方法?
我在考虑使用传输安全性 - 即SSL。我是否还应该使用
来使用Message securityclientCredentialType="certificate"
其中每个客户都有自己的证书,可以使用该服务对其进行身份验证吗?
或者我应该只为每个客户提供一个API密钥,它将提供类似的客户差异化水平?
欢迎任何其他建议。
请注意,这是服务接口的服务 - 即不是客户端应用程序。该服务的用户数量将受到限制,我预计不需要在数据级别应用安全性,更多的是在方法访问级别。
答案 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。在验证功能中,暂时不要抛出任何异常