您可以使用SOAP通过请求传递用户名/密码。应该使用SSL来加密通过线路传输的数据。下面是一些代码,我们使用:
这是将持有与该请求一起发送证书类:
Imports System.Web.Services.Protocols
Public Class ServiceCredentials
Inherits SoapHeader
Private _userName As String
Public Property UserName() As String
Get
Return _userName
End Get
Set(ByVal value As String)
_userName = value
End Set
End Property
Private _password As String
Public Property Password() As String
Get
Return _password
End Get
Set(ByVal value As String)
_password = value
End Set
End Property
Public Sub New()
End Sub
Public Sub NewUserInfo(ByVal ServiceUser As String, ByVal ServicePassword As String)
Me.UserName = ServiceUser
Me.Password = ServicePassword
End Sub
添加属性到您的Web服务的定义:
<WebMethod()> _
<SoapHeader("CredentialsHeader")> _
Function MyWebMethod(ByVal paremetersPassed as String)
'check permissions here
If PermissionsValid(CredentialsHeader) then
'ok!
.......
else
'throw a permission error
end if
End Function
然后从那里,只需创建一个函数(在我的例子,PermissionsValid)检查权限:
Function PermissionsValid(byval Credentials as ServiceCredentials) as boolean
'check Credentials.Username and Credentials.Password here and return a boolean
End Function
这可能看起来像一堆工作,但通过这种方式,当他们发送请求时,可以根据数据库或其他任何你想要的方式来检查它。您也可以在最后关闭用户名。
更简单的方法是限制允许访问服务页面的IP地址。但是,那么你遇到IP地址变化等问题。
顺便说一句,这很多都是因为我做了这个帖子,所以你可能需要检查代码,以确保它编译。 :)
为什么你需要使用Javascript和AJAX做到这一点?为什么不只是为您的客户提供服务,然后将他们的代码与服务端集成到服务器端。这样,您可以选择任何有意义的认证机制。 – laz 2009-02-02 15:24:43