我过去曾构建过公共使用过的ASP.NET Web服务,或者使用过Windows身份验证。我现在需要构建一个使用SOAP 1.1协议的Web服务,并且需要使用来自调用者的用户名和密码进行保护。
对于一个或两个Web服务来说,WCP似乎setting up the infrastructure是过度的。还有其他建议吗?我也在考虑使用ASP.NET 4.0 Beta,如果有人在这个场景中进行过探索,那么了解你的意见会很有帮助。
提前感谢您的建议。
答案 0 :(得分:6)
简单的方法是创建一个特殊的标头,其中包含每个调用的身份验证信息,并以这种方式验证/授权用户
以下是一些示例代码: http://aspalliance.com/805_Soap_Headers_Authentication_in_Web_Services
请注意,通过这种方式,您将发送明文用户名和密码,以便您可以使用ssl或使用某种摘要式身份验证
答案 1 :(得分:0)
有不同的方法可以做到这一点。一个可以启用对特定IP集的访问。如果IP与其中一个列表不匹配,那么您可以轻松拒绝方法级别的呼叫。
否则,您可以创建另一个方法,该方法将返回一个令牌,然后使所有相关方法期望返回该令牌以处理该请求。
答案 2 :(得分:0)
使用 SSL 。强制使用您的网络服务的每个人都使用https。
//Check for Secure Channel: HTTPS
if (!Context.Request.IsSecureConnection)
return "The HTTP Connection must use Secure Sockets (HTTPS)";