как я могу заставить одно веб-приложение получить доступ к моему собственному веб-сервису (asp.net)?

У меня есть asp веб-сервиса. Сеть и я хотим только одно определенное веб-приложение, использует его, но я не могу сделать этого.

может любой говорить мне, как я могу решить эту проблему.

1
задан user414296 8 August 2010 в 11:05
поделиться

2 ответа

Если вам известен IP-адрес единственного компьютера, которому разрешено использовать вашу веб-службу, вы можете проверить его и либо вернуть 404, либо исключение, если это не так.

1
ответ дан 2 September 2019 в 22:21
поделиться

Решение для аутентификации

Вы можете защитить свои методы, используя пароль в качестве аргумента в каждом из них, или в лучшем сценарии использовать традиционную аутентификацию форм для авторизации пользователя (в данном случае вашего приложения), а затем проверить, зарегистрирован ли пользователь при вызове веб-методов.

Например, создайте метод authorize следующим образом:

[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 только один раз в начале его использования, а затем использовать все методы, которые вам нравятся, потому что информация об аутентификации хранится в сессии сервера, предоставляющего веб-сервис.

Не забудьте установить 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
ответ дан 2 September 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: