如何让一个Web应用程序访问我自己的Web服务(asp.net)?

时间:2010-08-08 11:05:25

标签: asp.net

我有web服务asp.Net,我只想要一个特定的Web应用程序使用它,但我不能这样做。

任何人都可以告诉我如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

身份验证解决方案

您可以通过在每个方法中使用密码作为参数来保护您的方法,或者在更好的方案中使用传统的表单身份验证来授权用户(在本例中为您的应用程序),然后在调用webmethods时检查用户是否已记录

例如crate授权方法如下:

[WebMethod(EnableSession = true)]
public bool Authorize(login, password)
{
   if(login == "admin" && password == "supersecret")
   {
      FormsAuthentication.SetAuthCookie(login, false);
      return true;
   }

   return false;
}

[WebMethod(EnableSession = true)
public string SomeWebMethod()
{
   if(!User.Identity.IsAuthenticated)
     throw Exception("User unathenticated");

   /* method body */
}

然后,您可以在开始使用时只调用一次Authorize方法来使用您的Web服务,然后使用您喜欢的所有方法,因为身份验证信息存储在提供服务器会话的Web服务中。

不要忘记在所有网络方法中将EnableSession设置为true。

IP比较解决方案

在您的网络服务中添加方法

public bool CanExecute()
{
   return Context.Request.UserHostAddress == "290.110.11.12" /* put real ip here */    
}

然后在你的网络方法中使用

[WebMethod(EnableSession = true)
public string SomeWebMethod()
{
   if(!CanExecute())
     throw Exception("User unathenticated");

   /* method body */
}

希望这会有所帮助:)

答案 1 :(得分:1)

如果您知道允许使用您的网络服务的唯一计算机的IP地址,您可以检查它并返回404或异常(如果不是。)