|
Коллеги, помогите настроить делегирование
|
|||
---|---|---|---|
#18+
буду премного благодарен. Да и думаю подробная инструкция будет полезна всем кто столкнется с данной задачей. Итак имеем: 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.
На стороне Front-end server 2.1 включена опция «Trust computer for delegation (only Kerberos)» 2.2 Включена имперсонация в файле web.config Код: plaintext 1. 2.
В итоге при обращении к WCF-сервису получаю эксепшн The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'. Удаленный сервер возвратил ошибку: (401) Несанкционированный. Что я недонастроил или настроил не правильно? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2010, 13:03 |
|
Коллеги, помогите настроить делегирование
|
|||
---|---|---|---|
#18+
Ошибка была в следующем: в проекте клиента использовался ServiceReference, а не WebReference. Отсюда не мог задать xxx.Credentials = System.Net.CredentialCache.DefaultCredentials; Но возник новый вопрос - как один раз задать креденшиалс, чтобы не задавать каждый раз после создания ссылки на прокси? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2010, 10:30 |
|
Коллеги, помогите настроить делегирование
|
|||
---|---|---|---|
#18+
Продолжаю воевать :) Оказывается делегирование у меня работает. Но затык в следующем: У меня на одном и том же IIS развернуто как клиентское приложение (ASP.NET) так и WCF сервис. в обеих конфигах прописано Код: plaintext 1. 2. 3. 4. 5. 6.
отключен анонимный доступ, включена виндовая авторизация. На другой машине стоит SQL Server 2000. Дополнительного SPN прописывать не пришлось, так как сиквел работает под локальной учеткой. IIS работает под доменной учетной записью, которой включил делегирование на SqlServer. Так вот в чем закавыка, если из тонкого клиента подключаться к SQLServer - то делегирование проходит, и я законнекчиваюсь именно под учеткой клиента (профайлером проверил)ю а вот если из тонкого клиента дернуть метод, который делает такое же подключение - то на SqlServer идет учетка под которой крутится IIS. Т.е. делегирование не срабатывает. код на клиенте такой: Код: plaintext 1. 2. 3.
Почему???? Клиент же передал креденшиалс на wcf сервис, проверка показывает что ServiceSecurityContext.Current.WindowsIdentity.Name равен именно учетке пользователя. А на подключение к Sql серверу идет учетка IIS Народ ну накидайте мыслей - куда копать? :( ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2010, 14:20 |
|
Коллеги, помогите настроить делегирование
|
|||
---|---|---|---|
#18+
Получилось Дал явно понять с помощью атрибута [OperationBehavior(Impersonation = ImpersonationOption.Required)] что требуется олицетворение. Получается, каждый метод придется обозначить этим атрибутом. А можно это в web.config настроить? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2010, 15:26 |
|
|
start [/forum/topic.php?fid=19&fpage=25&tid=1397621]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
602ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 696ms |
0 / 0 |