Нужно добавить пользователя в систему (в домен или в локальные пользователи компьютера, на котором установлен IIS), после чего добавить в Global.asax.cs обработчик события AuthenticateRequest:
| Код | protected void Application_AuthenticateRequest(Object sender, EventArgs e) { WindowsIdentity id = (WindowsIdentity)User.Identity; if (id.IsAnonymous || !id.IsAuthenticated) { this.CompleteRequest(); HttpResponse r = Response; r.StatusCode = (int)HttpStatusCode.Unauthorized; r.StatusDescription = "Anonymous request is forbidden."; r.ContentType = "text/plain"; } } |
В Web.config должен быть прописан способ аутентификации "Windows":
| Код | <authentication mode="Windows" />
|
, а в IIS должен быть отключен анонимный доступ.
В таком случае, доступ к Web-сервису будет разрешён только для пользователей, зарегистрированных на сервере. Со стороны клиентского приложения требуется при создании объекта прокси "myservice" проинициализировать свойства myservice.Credentials (создать объект NetworkCredentials с именем пользователя, паролем и если надо - именем домена), myservice.PreAuthenticate (выставить true), и для работы через прокси - установить свойство myservice.UnsafeAuthenticatedConnectionSharing = true, св-во myservice.Proxy (подойдёт WebProxy.GetDefaultProxy()) и myservice.Proxy.Credentials (то же значение, что и в Credentials). |