powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Коллеги, помогите настроить делегирование
4 сообщений из 4, страница 1 из 1
Коллеги, помогите настроить делегирование
    #36740494
hstas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
буду премного благодарен. Да и думаю подробная инструкция будет полезна всем кто столкнется с данной задачей.

Итак имеем:
1. Back-end server это WCF сервис (wsHttpBinding), хостингом является IIS 6.0 (ОС Windows Server 2003 R2)
2. Front-end server Клиентская часть реализована в виде ASP.NET приложения. Запускаю ее сейчас из Visual Studio 2010 на моей машине, где веду разработку (ОС Win XP). Используется настроенный виртуальный каталог на IIS 5.0, а НЕ оснастка студии для web приложений
3. На другом сервере размещен MS SQL Server 2000

Почитал доки, статьи, в итоге выполнил следующие действия (по пунктам)
На стороне Back-end server:
1.1 включена опция «Trust computer for delegation (only Kerberos)»
1.2 на учетных записях в AD сброшен флаг «Account is sensitive and cannot be delegated»
1.3 в IIS в свойствах виртуального каталога установлено “Integrated Windows authentication”.
1.4 файле web.config WCF-сервиса настроено:
Код: plaintext
1.
2.
3.
4.
<identity impersonate="true" />
<authentication mode="Windows" /> 
<authorization>
    <deny users="?" /> 
</authorization>  

На стороне Front-end server
2.1 включена опция «Trust computer for delegation (only Kerberos)»
2.2 Включена имперсонация в файле web.config
Код: plaintext
1.
2.
<identity impersonate="true" />
<authentication mode="Windows" /> 
2.3 в IIS в свойствах виртуального каталога установлено “Integrated Windows authentication”.

В итоге при обращении к WCF-сервису получаю эксепшн

The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'.
Удаленный сервер возвратил ошибку: (401) Несанкционированный.


Что я недонастроил или настроил не правильно?

Спасибо
...
Рейтинг: 0 / 0
Коллеги, помогите настроить делегирование
    #36758902
hstas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка была в следующем:
в проекте клиента использовался ServiceReference, а не WebReference.
Отсюда не мог задать

xxx.Credentials = System.Net.CredentialCache.DefaultCredentials;


Но возник новый вопрос - как один раз задать креденшиалс, чтобы не задавать каждый раз после создания ссылки на прокси?
...
Рейтинг: 0 / 0
Коллеги, помогите настроить делегирование
    #36763985
hstas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаю воевать :)

Оказывается делегирование у меня работает.

Но затык в следующем:

У меня на одном и том же IIS развернуто как клиентское приложение (ASP.NET) так и WCF сервис.

в обеих конфигах прописано

Код: plaintext
1.
2.
3.
4.
5.
6.
		<identity impersonate="true"/>
		<authentication mode="Windows"/>
		<authorization>
			<deny users="?"/>
                        <allow users="*"/>
		</authorization>

отключен анонимный доступ, включена виндовая авторизация.

На другой машине стоит SQL Server 2000. Дополнительного SPN прописывать не пришлось, так как сиквел работает под локальной учеткой.
IIS работает под доменной учетной записью, которой включил делегирование на SqlServer.

Так вот в чем закавыка, если из тонкого клиента подключаться к SQLServer - то делегирование проходит, и я законнекчиваюсь именно под учеткой клиента (профайлером проверил)ю

а вот если из тонкого клиента дернуть метод, который делает такое же подключение - то на SqlServer идет учетка под которой крутится IIS. Т.е. делегирование не срабатывает.

код на клиенте такой:
Код: plaintext
1.
2.
3.
FooWebService pSrv = new FooWebService();
pSrv.Credentials = System.Net.CredentialCache.DefaultCredentials;
pSrv.CreateConnect();  -- [color=red]тут вот вылетает эксепшн, логин файлед[/color]

Почему???? Клиент же передал креденшиалс на wcf сервис, проверка показывает что

ServiceSecurityContext.Current.WindowsIdentity.Name равен именно учетке пользователя.
А на подключение к Sql серверу идет учетка IIS

Народ ну накидайте мыслей - куда копать? :(
...
Рейтинг: 0 / 0
Коллеги, помогите настроить делегирование
    #36766376
hstas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось

Дал явно понять с помощью атрибута
[OperationBehavior(Impersonation = ImpersonationOption.Required)]

что требуется олицетворение.

Получается, каждый метод придется обозначить этим атрибутом.
А можно это в web.config настроить?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Коллеги, помогите настроить делегирование
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]