Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Защита web-service?..


Автор: Kurt 10.7.2005, 13:16
Допустим, я написал web-service, к-й возвращает некий датасет из базы данных. Возникает вопрос - а как зищитить такие данные от несанкционированного доступа?
Например, если я хочу, чтоб эти данные получали лишь те, кто смогут правильно указать логин/пароль?
Как правильно организовывается защита web-sevice?

Автор: mr.DUDA 10.7.2005, 17:07
Нужно организовать аутентификацию на базе Windows Basic или других технологий в своём веб-приложении. Если надо, могу более подробно объяснить, что нужно сделать, и как.

Автор: Kurt 10.7.2005, 18:13
Цитата
Если надо, могу более подробно объяснить, что нужно сделать, и как.

Если есть возможность/время, с удовольствием бы почитал..

Автор: mr.DUDA 11.7.2005, 09:28
Нужно добавить пользователя в систему (в домен или в локальные пользователи компьютера, на котором установлен 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).

Автор: artskif 10.4.2006, 10:18
Вопрос по этой же теме

У меня есть такой код

Код

HttpChannel http = new HttpChannel();

            ChannelServices.RegisterChannel(http);

            Hello obj = (Hello)Activator.GetObject(typeof(Hello), "http://localhost/simplehello/SimpleHelloWorld.soap");
    


Сервер требует авторизации....

вот эта строчка тоже есть
Код

<authentication mode="Windows" />


Вопрос: Как мне прикрутить сюда авторизацию?

Автор: arilou 17.4.2006, 23:57
Цитата(artskif @  10.4.2006,  10:18 Найти цитируемый пост)
Вопрос по этой же теме 

Не совсем по этой же smile У тебя речь идет о Remoting, как я понял. Так вот, чтобы реализовать аутентификацию для Remoting'а, публиковать классы надо через IIS со включенной Windows авторизацией. Это единственно возможный вариант. 

Автор: GarryCSharp 6.6.2007, 07:05
А как подключитьться к IIS если на нём стоит аутентификация по сертификату и стандартная по Windows????

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)