|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
Имеем следующее: Клиент (в данном случае виноформз) - WCF Service (сервер1) - SQL Server (сервер2) Сиквел для доступа использует только вин-аутентификацию. На уровне сервиса виндовый эккаунт авторизутся, но когда пытаемся открыть соединение с БД предварительно имперсонировав, получаем исключение аутентификации с анонимным эккаунтом. Вопрос: как сделать "проброс" эккаунта от сервиса к серверу БД? Пытались сделать, как описано здесь , ничего не получается, да, если не имперсонолизировать явно, то получаем вот такое The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception исключение. Может кто сталкивался, ткните, хоть куда копать. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2010, 18:56 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
winsky!... Пытались сделать, как описано здесь ... Может кто сталкивался, ткните, хоть куда копать. ... Я делал когда-то имперсонацию между ASP.NET и MSSAS способом примерно совпадающим с указанным в ссылке ( setspn -A MSSQLSvc/ databaseservername.fullyqualifieddomainname domain\customAccountName) - никаких проблем не было. Вы пробовали воспроизвести по шагам те простейшие сервисы, которые предлагаются в статье? Например, это: Код: plaintext 1. 2. 3. 4. 5.
З.Ы. текст исключения из SQL тоже пригодился бы для обсуждения, а не его враппер... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2010, 10:42 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
с asp.net проблем нет. проблемы с WCF авторВы пробовали воспроизвести по шагам те простейшие сервисы, которые предлагаются в статье? Например, это: возвращает эккаунт, под которым происходит вызов, т.е. на этом уровне все ок. но если пойти дальше и попробовать открыть подключение к БД получаем исключение: The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception если пойти еще дальше и в сервисе сделать следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Login failed for user 'NT AUTHORITY\\ANONYMOUS LOGON'." ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2010, 11:42 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
winsky!с asp.net проблем нет. проблемы с WCF авторВы пробовали воспроизвести по шагам те простейшие сервисы, которые предлагаются в статье? Например, это: возвращает эккаунт, под которым происходит вызов, т.е. на этом уровне все ок. но если пойти дальше и попробовать открыть подключение к БД получаем исключение: The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception если пойти еще дальше и в сервисе сделать следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Login failed for user 'NT AUTHORITY\\ANONYMOUS LOGON'." Вот это аккуратно настроили? автор Step 4: Configure the WCF Service Identity Trusted for Constrained Delegation In this step, you configure Active Directory to allow your WCF service to use constrained delegation to access a remote database server. If your WCF service runs using the Network Service machine account, you must enable constrained delegation for your WCF server computer. However, if your WCF service runs under a custom domain account, you must enable constrained delegation for the custom domain account. Честно говоря, не могу пока придумать - как убедиться в правильности настройки без обращения к SQL-серверу? (возможно, после настройки делегирования надо перезапустить комп. или дождаться каких-нить "синхронизаций" в AD). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2010, 12:42 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
qu-qu, да, настроили. по сути это все и было настроено давно - несколько asp.net приложений работают таким образом давно и без проблем, похоже проблема именно в конфигурировании WCF сервиса, чего-то ему не хватает, не можем понять чего :( ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2010, 12:47 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2010, 12:47 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
Решение найдено. Исключение с текстом "Login failed for user 'NT AUTHORITY\\ANONYMOUS LOGON'" возникает, если не выключить установленный по умолчанию в true параметр serviceClient.ClientCredentials.Windows.AllowNtlm = false; Итак, рецепт делегирования прав при такой инфраструктуре: [WinForms Client]---(HTTPS)--->[WCF Service on IIS running domain account]--->[SQL Server under domain account] 1. Конфигурируем web.config: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
2. Создаем клиента, добавляем сервис референс, далее настраиваем конфигурацию эндпоинта в app.config: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
3. В коде клиента указываем данные пользователя: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2010, 18:24 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
итого: неделя потрачена на то, чтобы три лба по очереди бились об стол WCF. самым настойчивым оказался не я. всем спасибо, тема раскрыта. ЗЫ: Особенно большое спасибо хочется сказать ребятам из майкрософт за их семплы (ну не приходит им мысл в голову, что клиент запущен на одной машине, апп. сервер - на второй, сервер БД - на третьей, localhost - любимое слово) - чтобы имплементировать данную схему пришлось перерыть: статей - штук 10 как минимум, одним участником была куплена книга по WCF (там ответ не нашелся, по крайней мере при относительно беглом просмотре), может когда прочтем ее полностью - ответы найдутся, потрачено немеряно времени в курилке в жарких спорах (иногда чуть не до драки доходило) все классно - но когда попадаешь в этот процесс конфигурячиния - ужос, + голова болит. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2010, 20:22 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
winsky!, Не могли бы вы оформить результат в виде статейки со скриншотами и выложить где-нить на блоге? (или тут кто-то ресурс по WCF рекламировал, забыл уже кто, но статьи там приветствуются). З.Ы. когда в следующий раз кто-то будет гуглить на ету тему, глядишь - и вас вспомнит добрым словом... (а карма - она не пропадает, она - вечна). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2010, 00:31 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
Был такой же случай (только с EF). Помог вынос обращения к БД в отдельный слой (проект). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2010, 06:41 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
qu-qu(или тут кто-то ресурс по WCF рекламировал, забыл уже кто, но статьи там приветствуются). wcf.net.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2010, 12:27 |
|
Client->WCF->DB Server Windows authentication
|
|||
---|---|---|---|
#18+
drug123[WinForms Client]---(HTTPS)--->[WCF Service on IIS running domain account]--->[SQL Server under domain account] Верно ли я понимаю, что из-под доменного аккаунта должен быть запущен пул, в котором находится приложение с WCF-сервисами? Или нужно перезапустить еще что-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2012, 15:59 |
|
|
start [/forum/topic.php?fid=19&msg=37026298&tid=1397170]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
112ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 280ms |
total: | 478ms |
0 / 0 |