У меня есть asp веб-сервиса. Сеть и я хотим только одно определенное веб-приложение, использует его, но я не могу сделать этого.
может любой говорить мне, как я могу решить эту проблему.
Если вам известен IP-адрес единственного компьютера, которому разрешено использовать вашу веб-службу, вы можете проверить его и либо вернуть 404, либо исключение, если это не так.
Вы можете защитить свои методы, используя пароль в качестве аргумента в каждом из них, или в лучшем сценарии использовать традиционную аутентификацию форм для авторизации пользователя (в данном случае вашего приложения), а затем проверить, зарегистрирован ли пользователь при вызове веб-методов.
Например, создайте метод 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 во всех ваших веб-методах.
В вашем вебсервисе поставьте метод
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 */
}
Надеюсь это поможет :)