Как я могу получить доступ к ролям/разрешениям пользователей с помощью специального расширения безопасности SSRS и BIDS?

Я написал и развернул пользовательское расширение безопасности для SSRS 2008r2, и оно прекрасно работает, если не считать попытки развернуть отчеты из BIDS 2008/Visual Studio.

Архитектура расширения безопасности обрабатывает вход в систему через несколько органов, и я управляю этим, создавая пользовательский сеанс в LogonUser(), сохраняя его в базе данных и затем загружая сеанс в клиентский прокси-класс для веб-службы RS, используя UID, переданный cookie из службы, а затем перезаписывает билет проверки подлинности, чтобы он содержал идентификатор сеанса плюс роли пользователя для текущего пользователя. Затем эти значения можно использовать в пользовательском расширении авторизации для управления разрешениями пользователей на действия и объекты SSRS.

Проблема, с которой я столкнулся, заключается в том, что он не работает при развертывании отчетов из BIDS. Он обращается к службе напрямую, поэтому класс прокси службы не требуется. Я попытался обработать событие после аутентификации в контексте HTTP, но, увы, файл cookie сеанса не сохраняется службой RS, поэтому я не могу получить доступ к значениям сеанса.

Итак, что мне не хватает? Есть ли другой метод управления ролями и разрешениями пользователей, который нигде не требует жесткого кодирования имен пользователей? Как я уже сказал, вход в систему может осуществляться с использованием нескольких полномочий, поэтому управление разрешениями только с помощью имени пользователя невозможно (и мысль об этом заставляет меня съеживаться).

Одним из возможных решений, о котором я подумал, является написание расширения или плагина для BIDS, который, по сути, действует как прокси для веб-службы, что позволило бы мне лучше контролировать процесс входа в систему, но я понятия не имею, возможно ли это (гугл не поможет. ..)

Любая помощь будет принята с благодарностью!


person Dan    schedule 23.02.2012    source источник
comment
Вы получили какое-либо решение с полным исходным кодом?   -  person PreguntonCojoneroCabrón    schedule 18.08.2015


Ответы (2)


Используете ли вы интерфейс IAuthenticationExtension? Следующая ссылка предоставляет хороший пример управления доступом, если это то, что вам нужно. http://blogs.msdn.com/b/jameswu/archive/2008/07/15/anonymous-access-in-sql-rs-2008.aspx

Я бы предположил, что здесь можно отследить имя пользователя nt, а затем выполнить поиск по группам Active Directory и т. д. Основная головная боль, которую я здесь вижу, — это включение правильной политики доверия в конфигурации политики ssrs.

person Alex H    schedule 24.02.2012
comment
Спасибо за ваш ответ, но, как я упоминал выше, я использую аутентификацию форм с более чем одним органом для учетных данных для входа, поэтому отслеживание разрешений только с именем пользователя невозможно (например, в каждом органе могут быть разные пользователи с одним и тем же именем пользователя). Я определенно не использую анонимный доступ. - person Dan; 27.02.2012

Что ж, я отказался от поиска элегантного решения, поэтому я пошел по пути наименьшего сопротивления и следовал тому, что, как я понял, является руководством SSRS по наличию «главной» учетной записи, которую я укажу для использования для развертывания отчетов и подписки. Эта учетная запись должна быть жестко закодирована или извлечена из файла настроек. Я не уверен, что есть какой-либо другой способ. Ваше здоровье.

Обновление: я пошел по этому пути, и все работает нормально. Если пользователь вошел в систему через веб-интерфейс, он может развертывать отчеты там, но если он хочет выполнить развертывание из среды разработки (BIDS), ему необходимо войти в систему, используя основную учетную запись, когда она отображается в диалоговом окне входа. Я ограничил развертывающую учетную запись только этим конкретным использованием.

person Dan    schedule 27.02.2012
comment
Звучит как жизнеспособный вариант. Другое направление — использовать другие инструменты для развертывания отчетов. Мы используем развертывание BIDS только для первоначального развертывания сервера отчетов, и то только в половине случаев. RSS (stackoverflow.com/questions/3056799/) может у меня такая же проблема с аутентификацией, но развертывание через IE не самое худшее в мире... - person Jamie F; 28.02.2012
comment
@JamieF спасибо за ваш комментарий, да, я думал о развертывании через веб-интерфейс, но, по-моему, это только усложняет задачу для разработчиков отчетов. Также такая же проблема возникает при запуске подписки (т.е. данные пользователя не могут быть загружены должным образом), поэтому основная учетная запись будет подходом двух зайцев и одного камня. Но я не особо этому рад. - person Dan; 28.02.2012