Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Имперсонация и делегирование asp.net проекта
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. Возможно данный вопрос стоит адресовать специалистам в области asp.net, тем не менее он ощутимо затрагивает настройку SQL SERVER. Наша компания занимается разработкой многослойного приложения, включающего в себя: - Desktop клиент; - Web APi сервер приложений. - AppServer - БД, развернутая на MS SQL Server Клиентское приложение практически выполняет функцию отображения (wpf мордочка), обработка данных из БД и также бизнес логика реализованы в AppServer. Некоторая сложная логика, включающая множество join операций вынесена на уровень БД в функции и хранимые процедуры и клиент обращается к ним напрямую (в тех местах, где "проседает" производительность по времени). Идея взаимодействия такова: пользователь работает с клиентом под своей доменной учетной записью (не силен в данном вопросе, но знаю, что все учетки, а также их права хранятся на уровне БД, + Active directory). Пользователь обращается к AppServer, к примеру хочет отобразить некие данные в таблице. AppServer соответственно делает запрос к БД и вытаскивает нужные данные. НО! Важно, чтобы AppServer выполнял этот запрос от имени учетки пользователя, который работает с клиентом, в противном случае политика раздачи прав на объекты в БД не имеет смысла. Т.е. нужно реализовать механизм "сквозной авторизации" на SQL Server через AppServer. Поиски решения привели к понятиям имперсонации и делегирования в asp.net проекте и к данной статье в частности: http://blog.reveille.org.uk/2010/01/asp-net-impersonation-delegation/ сделал соответствующие настройки в web.config, установил в IIS Negotiate:Kerberos и убрал Kernel-mode authentification, админ соответственно настроил соответствующим образом Active Directory, установив "Trust this computer for delegation to any service", то есть, по сути, сделал делегирование enable. Пытаюсь проверить работоспособность делегирования через тестовый проектик: создал Web API проект, добавил тестовый метод со следующим кодом: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. чтобы проверить, авторизован ли я на сервисе, и запаблишил этот сервис Учетку из http контекста данный метод возвращает верно, то есть я делаю вывод, что на сервисе я авторизован. Далее я делаю тестовый метод для обращения к sql server к нужной базе, данный метод должен вернуть suser_sname: Код: c# 1. 2. 3. 4. 5. 6. Обращаюсь в браузере к контроллеру: http://.../api/values В результате я получаю такую ошибку: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Поиск в гугл приводит меня к одним и тем же ссылкам, в которых указываются настройки, которые уже установлены. Я почти уверен, что проблема где-то в настройках IIS или Active Directiry, но к сожалению пока-что решение не найдено. Возможно кто-то решал схожую задачу либо сталкивался с такой проблемой. Буду очень благодарен Вам за помощь! Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2015, 21:00 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=18&tid=1356356]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 271ms |
| total: | 433ms |

| 0 / 0 |
