我使用Visual Studio 2010在VB中构建了一个简单的Web服务。现在我想通过用户名和密码来保护这个Web服务。如果用户名和密码匹配,则用户可以使用/查看内容。我的网络服务如下;
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Web.Script.Services
' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
<System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class Convert
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
<System.Web.Services.WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Function FahrenheitToCelsius(ByVal Fahrenheit As Double) _
As Double
Return ((Fahrenheit - 32) * 5) / 9
End Function
<System.Web.Services.WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Function CelsiusToFahrenheit(ByVal Celsius As Double) _
As Double
Return ((Celsius * 9) / 5) + 32
End Function
End Class
我正在使用JavaScript使用Dojo来调用它。有人可以指导我如何保护它。
答案 0 :(得分:1)
这证明了一种合理的声音方法: http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
简而言之,您发送用户名,散列密码,客户端时间戳和函数参数,以及所有这些加上请求URL和私钥的散列。服务器重新创建散列以验证没有任何更改,检查时间戳是否在可接受的范围内,并执行该函数。