保护WCF web服务
本文关键字:服务 web WCF 保护 | 更新日期: 2023-09-27 18:28:05
我目前正在维护一个严重依赖WCF web服务的web应用程序。目前,这些服务没有安全性,因此任何知道服务地址和参数的人都可以从中访问数据,甚至无需登录web应用程序。
示例:
http://www.mydomain.com/webservices/holidays.svc/GetHolidaysForUser?id=1234
这个例子只需要在没有任何身份验证的情况下将JSON字符串发布回浏览器。
不幸的是,WCF是我不太熟悉的东西,所以我不知道从哪里开始。
注意:如果可能的话,我被要求使用表单身份验证。
一个选项是使用客户端证书。
如果您无法更改当前实现(如果您选择"表单身份验证"路线,则需要此解决方案),则此解决方案可能是一个选项。请记住,处理证书需要IT操作在服务器和客户端上生成和安装证书。这在你的情况下是否可行,从你的问题中还不清楚。
首先创建证书(如果您不是购买证书,而是自己生成证书,请确保IT人员已做好准备,可以在Trusted Store中添加您的根证书,这对您服务的用户也是如此!)
添加此端点行为客户端
<behaviors>
<endpointBehaviors>
<behavior name="ClientCertificateBehavior">
<clientCredentials>
<clientCertificate findValue="client.com"
storeLocation="CurrentUser"
storeName="My"
x509FindType="FindBySubjectName" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
添加/修改此服务器端:
<wsHttpBinding>
<binding name="wsHttpEndpointBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
<endpoint binding="wsHttpBinding" bindingConfiguration="wsHttpEndpointBinding"
name="wsHttpEndpoint" contract="IService" />
将Web服务器配置为使用SSL并要求客户端证书。
这个答案是本指南的简短版本
您希望实现哪种身份验证?Active Directory还是自定义数据库?实现安全性的方法有很多。如果您的服务和网站托管在公司环境中,我强烈建议您使用active directory windows身份验证。有很多例子详细地逐一描述了这一步骤。