2012-02-23 2 views
5

Я написал и развернул собственное расширение безопасности для SSRS 2008r2, и он прекрасно работает, кроме того, что при попытке развернуть отчеты из BIDS 2008/Visual Studio.Как я могу получить доступ к пользовательским ролям/разрешениям с помощью SSRS и BIDS Custom Security Extension?

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

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

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

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

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

+0

Вы получили какое-либо решение с полным исходным кодом? –

ответ

2

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

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

+0

Звучит как жизнеспособный вариант. Другое направление - использовать другие инструменты для развертывания отчетов. Мы используем только развертывание BIDS для развертывания первоначального сервера отчетов и это только в половине случаев. RSS (http: // stackoverflow.com/questions/3056799/automating-ssrs-report-deployment) может иметь одинаковую проблему с проверкой подлинности, но развертывание через IE не самое худшее в мире ... –

+0

@JamieF благодарит за ваш комментарий, да, я думал о развертывание через веб-интерфейс, но IMO это только усложняет работу разработчиков отчетов. Также та же проблема возникает при запуске подписок (т. Е. Данные пользователя не могут быть загружены должным образом), поэтому главная учетная запись будет иметь подход с двумя птицами/одним камнем. Но я не очень этому доволен. – Dan

2

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

Я предположил бы, что нт имя пользователя можно отслеживать здесь, а затем Lookups сделано против активных групп каталогов и т.д. Основной головной болью я могу увидеть здесь буду благоприятной правильная политика доверия в конфигурации SSRS политики.

+0

Спасибо за ваш ответ, но, как я уже упоминал выше, я использую проверку подлинности с несколькими полномочиями для учетных данных для входа, поэтому разрешения на подключение с помощью только имени пользователя невозможны (например, в каждом органе могут быть разные пользователи с одинаковым именем пользователя). Я определенно не использую анонимный доступ. – Dan