Всем привет!
Возникла следующая проблемка.
Есть веб-сервис, который обращается к MSSQL серверу посредством SqlConnection c доменной авторизацией. Соответственно, в Web.config есть строка
<identity impersonate="true" />
доступ anonymous'у выключен посредством диспетчера IIS. Отмечен только пункт "Встроенная проверка подлинности Windows".
Т.е. чисто интранет-сервис.
Далее есть простенькая страница которая инстанцирует сервис и через webmethod вытягивает данные.
Параметры безопасности такие же как и для сервиса.
Код интанцирования сервиса в page_load'e странички
localhost.AuthorsService ws = new localhost.AuthorsService(); //Собсно и есть класс, сформированный на основе web-reference
далее вызов web-method
ws.Credentials = System.Net.CredentialCache.DefaultCredentials;
AuthorData.Merge(ws.GetAuthors()); //AuthorData - это DataSet
Метод GetAuthors — метод сервиса, который через trusted connection и обращается к SQL серверу.
Итак, запускаю от себя (domain1\user1) — все ок. IIS 5.0 установлен на этой же машине.
Запускаю от юзера (domain1\user2) — ошибка. SQL сервер отверг юзера "(null)" (или как вариант "\").
делаю трассировку:
[WebMethod]
public string WhoAmI()
{
string a;
a = User.Identity.Name;
return a;
}
И веб-сервис и страница выдают, что имеют дело с domain1\user2, однако sql сервер не пропускает.
Так что выдает System.Net.CredentialCache.DefaultCredentials ?
Получается. что если запуск идет от меня — то это свойство возвращает права domain1\user1, а с другой машины — возвращает непонятно что, хотя по условиям имперсонации (<identity impersonate="true" />) должна была вернуть domain1\user2
Ну и в качестве доп. информации: и domain1\user1 и domain1\user2 нормально коннектятся к SQL серверу через trusted connection.
Страничка с сервисом нормально грузится у domain1\user2.
P.S. с какой учетной записью грузится webservice в данном случае?
P.P.S. А примерчик взят из доков по .net distributed application. т.е. накосячить я сам не мог.
09.01.03 19:11: Перенесено из 'Прочее'