您可以使用SOAP在请求中传递用户名/密码。SSL应该用于加密通过网络传输的数据。这是我们使用的一些代码:
此类将保存与请求一起发送的凭据:
imports System.Web.Services.ProtocolsPublic Class ServiceCredentialsInherits SoapHeaderPrivate _userName As StringPublic Property UserName() As String Get Return _userName End Get Set(ByVal value As String) _userName = value End SetEnd PropertyPrivate _password As StringPublic Property Password() As String Get Return _password End Get Set(ByVal value As String) _password = value End SetEnd PropertyPublic Sub New()End SubPublic Sub NewUserInfo(ByVal ServiceUser As String, ByVal ServicePassword As String) Me.UserName = ServiceUser Me.Password = ServicePasswordEnd 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 booleanEnd Function
这似乎是一堆工作,但是通过这种方式,当他们发送请求时,您可以针对数据库或其他任何想要的内容进行检查。您也可以在最后轻松关闭用户名。
一种更简单的方法是限制允许访问服务页面的IP地址。但是,然后您会遇到IP地址更改等问题。
顺便说一句,其中的大部分内容都是我在帖子中输入的,因此您可能需要检查代码以确保其可编译。:)



