Web service
От: трайкатч  
Дата: 26.01.11 13:33
Оценка:
Можно ли заставить выполняться метод веб сервиса под конкретным пользователем? Задача такая: в методе web сервиса используется сторонний компонент, в котором идет обращение (с помощью TcpClient-а) к внешнему ip адресу. Запросы к ip адресу обламываются, поскольку веб сервис работает под ASPNET клиентом, который не прописан на прокси сервере.
Нужно либо авторизоваться на прокси сервере, либо выполнить код web сервиса под другой учеткой (не ASPNET). Может есть какие-то идеи? Заранее спасибо!
Re: Web service
От: vmpire Россия  
Дата: 26.01.11 14:31
Оценка: 1 (1)
Здравствуйте, трайкатч, Вы писали:

Т>Можно ли заставить выполняться метод веб сервиса под конкретным пользователем? Задача такая: в методе web сервиса используется сторонний компонент, в котором идет обращение (с помощью TcpClient-а) к внешнему ip адресу. Запросы к ip адресу обламываются, поскольку веб сервис работает под ASPNET клиентом, который не прописан на прокси сервере.

Т>Нужно либо авторизоваться на прокси сервере, либо выполнить код web сервиса под другой учеткой (не ASPNET). Может есть какие-то идеи? Заранее спасибо!
Если IIS версии 6 и выше — пропишите пользователя в application pool
Если более старый — поставьте имперсонирование конфиге приложения (http://msdn.microsoft.com/en-us/library/72wdk8cc.aspx)
Re[2]: Web service
От: трайкатч  
Дата: 27.01.11 13:06
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Здравствуйте, трайкатч, Вы писали:


Т>>Можно ли заставить выполняться метод веб сервиса под конкретным пользователем? Задача такая: в методе web сервиса используется сторонний компонент, в котором идет обращение (с помощью TcpClient-а) к внешнему ip адресу. Запросы к ip адресу обламываются, поскольку веб сервис работает под ASPNET клиентом, который не прописан на прокси сервере.

Т>>Нужно либо авторизоваться на прокси сервере, либо выполнить код web сервиса под другой учеткой (не ASPNET). Может есть какие-то идеи? Заранее спасибо!
V>Если IIS версии 6 и выше — пропишите пользователя в application pool
V>Если более старый — поставьте имперсонирование конфиге приложения (http://msdn.microsoft.com/en-us/library/72wdk8cc.aspx)
Спасибо! IIS 5.1. Прописал в конфиге <identity impersonate="true" userName="domain\User" password="pass"/>. Но все равно облом
Re[3]: Web service
От: vmpire Россия  
Дата: 27.01.11 13:30
Оценка: 3 (1)
Здравствуйте, трайкатч, Вы писали:

Т>>>Можно ли заставить выполняться метод веб сервиса под конкретным пользователем? Задача такая: в методе web сервиса используется сторонний компонент, в котором идет обращение (с помощью TcpClient-а) к внешнему ip адресу. Запросы к ip адресу обламываются, поскольку веб сервис работает под ASPNET клиентом, который не прописан на прокси сервере.

Т>>>Нужно либо авторизоваться на прокси сервере, либо выполнить код web сервиса под другой учеткой (не ASPNET). Может есть какие-то идеи? Заранее спасибо!
V>>Если IIS версии 6 и выше — пропишите пользователя в application pool
V>>Если более старый — поставьте имперсонирование конфиге приложения (http://msdn.microsoft.com/en-us/library/72wdk8cc.aspx)
Т>Спасибо! IIS 5.1. Прописал в конфиге <identity impersonate="true" userName="domain\User" password="pass"/>. Но все равно облом
А прокси-то какой? И какого типа (HTTP, SOCKS...)? Windows-аутентификацию, вроде, только майкрософтовский понимает. Если какой другой — надо это делать средствами протокола, смена пользователя тут не поможет.
Re[3]: Web service
От: hardcase Пират http://nemerle.org
Дата: 27.01.11 13:46
Оценка:
Здравствуйте, трайкатч, Вы писали:

V>>Если IIS версии 6 и выше — пропишите пользователя в application pool

V>>Если более старый — поставьте имперсонирование конфиге приложения (http://msdn.microsoft.com/en-us/library/72wdk8cc.aspx)
Т>Спасибо! IIS 5.1. Прописал в конфиге <identity impersonate="true" userName="domain\User" password="pass"/>. Но все равно облом

Есть еще вариант — заводить приложение на IISExpress
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Web service
От: vmpire Россия  
Дата: 27.01.11 14:38
Оценка:
Здравствуйте, hardcase, Вы писали:

V>>>Если IIS версии 6 и выше — пропишите пользователя в application pool

V>>>Если более старый — поставьте имперсонирование конфиге приложения (http://msdn.microsoft.com/en-us/library/72wdk8cc.aspx)
Т>>Спасибо! IIS 5.1. Прописал в конфиге <identity impersonate="true" userName="domain\User" password="pass"/>. Но все равно облом

H>Есть еще вариант — заводить приложение на IISExpress

Ага. Или вообще свой процесс сделать.
Re[4]: Web service
От: трайкатч  
Дата: 28.01.11 07:45
Оценка:
Здравствуйте, vmpire, Вы писали:

V>А прокси-то какой? И какого типа (HTTP, SOCKS...)? Windows-аутентификацию, вроде, только майкрософтовский понимает. Если какой другой — надо это делать средствами протокола, смена пользователя тут не поможет.


Proxy — Microsoft ISA Server
Re[3]: Web service
От: vmpire Россия  
Дата: 28.01.11 10:59
Оценка: 3 (1)
Здравствуйте, трайкатч, Вы писали:

Т>>>Нужно либо авторизоваться на прокси сервере, либо выполнить код web сервиса под другой учеткой (не ASPNET). Может есть какие-то идеи? Заранее спасибо!

V>>Если IIS версии 6 и выше — пропишите пользователя в application pool
V>>Если более старый — поставьте имперсонирование конфиге приложения (http://msdn.microsoft.com/en-us/library/72wdk8cc.aspx)
Т>Спасибо! IIS 5.1. Прописал в конфиге <identity impersonate="true" userName="domain\User" password="pass"/>. Но все равно облом
Ну тогда попробуйте имперсонироваться вручную перед тем, как отправлять запрос на сервер.
Пример есть тут (в конце кода): http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx
Re[4]: Web service
От: трайкатч  
Дата: 04.02.11 12:18
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Ну тогда попробуйте имперсонироваться вручную перед тем, как отправлять запрос на сервер.

V>Пример есть тут (в конце кода): http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx
Спасибо, почитал. Попробовал принудительную имперсонализацию в методе web сервиса

            WindowsIdentity windowsIdentity = new WindowsIdentity(WindowsIdentity.GetCurrent().Token, "WindowsAuthentication");
          
            WindowsImpersonationContext impersonationContext =
                windowsIdentity.Impersonate();

все равно никак
Проблема кажется не в этом. Весь инет уже облазил. Не пойму в чем дело. Прокси сервер ISA Server. Через консольного клиента вот такое
var canRead = new TcpClient("ya.ru", 80).GetStream().CanRead;

проходит на ура.
Через web сервис тот же самый код падает — "Получен недопустимый аргумент 93.158.134.3:80".
Касперского выгрузил, брандмауэр отключен.
Web config содержит следующие настройки:

<?xml version="1.0"?>
<configuration>

<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="true" >
</compilation>
<authentication mode="Windows"/>
<identity impersonate="true" userName="domain\User" password="password"/>
</system.web>

<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy proxyaddress="http://isa_server:8080/" bypassonlocal="True" usesystemdefault="False" />
</defaultProxy>
</system.net>
</configuration>

Вообще не знаю куда копать. Может еще какие-нибудь будут идеи? Заранее спасибо!
Re[4]: Web service
От: трайкатч  
Дата: 04.02.11 12:20
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Здравствуйте, трайкатч, Вы писали:


Т>>>>Нужно либо авторизоваться на прокси сервере, либо выполнить код web сервиса под другой учеткой (не ASPNET). Может есть какие-то идеи? Заранее спасибо!

V>>>Если IIS версии 6 и выше — пропишите пользователя в application pool
V>>>Если более старый — поставьте имперсонирование конфиге приложения (http://msdn.microsoft.com/en-us/library/72wdk8cc.aspx)
Т>>Спасибо! IIS 5.1. Прописал в конфиге <identity impersonate="true" userName="domain\User" password="pass"/>. Но все равно облом
V>Ну тогда попробуйте имперсонироваться вручную перед тем, как отправлять запрос на сервер.
V>Пример есть тут (в конце кода): http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx
Добавлю, что на студийном ASP.NET Development Server-е все запросы проходят нормально
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.