Что делать если вас не узнают в Reporting Services или добро пожаловать ANONYMOUS….
Если у вас например трехзвенная архитектура (клиент-> сервер приложений/отчетов-> сервер реляционной/многомерной БД) и вы пользуетесь авторизацией Windows
Вы точно столкнетесь с этой задачей, однако на практике она оказывается гораздо проще чем кажется..
при запуске отчета по раздаче прав, который берет данные с сервера БД , возникла ошибка
Т.к. здесь возникает второй круг авторизации, первый от клиента к серверу отчетов, второй от сервера отчетов к серверу БД, схема приблизительно выглядит так
Для решения этой задачи в принципе достаточно настроить авторизацию по протоколу Kerberos,
для этого нужно зарегистрировать в Active Directory SPN (Service Principal Name) для учетной записи под которой работает сервис и в итоге получится
Благодаря сопоставлению SPN, определенному в Active Directory (AD), учетная запись Windows, ответственная за службу,
может быть удостоверена и использована для проверки подлинности Kerberos
Процесс решения выглядит следующим образом полная версия
Регистрация имени участника-службы для службы сервера отчетов, которая запускается от имени пользователя домена
- Установите службы Службы Reporting Services и настройте службу сервера отчетов для запуска от учетной записи пользователя домена. Не забывайте, что пользователи не смогут соединиться с сервером отчетов до тех пор, пока не будут выполнены все описанные ниже шаги.
- Войдите на контроллер домена как администратор домена.
- Откройте окно командной строки.
- Скопируйте следующую команду, заменив заполнители значениями для конкретной сети:
- Setspn -s http/<computer-name>.<domain-name>:<port> <domain-user-account>
Например: Setspn -s http/MyReportServer.MyDomain.com:80 MyDomainUser
- Выполните команду.
- Откройте файл RsReportServer.config и найдите раздел <AuthenticationTypes>.
- Добавьте <RSWindowsNegotiate/> в качестве первой записи этого раздела для включения NTLM.
Небольшие комментарии
Для Reporting Services в native mode, нужно зергистрировать следующие SPNs
--SQL Server Service
SETSPN -S mssqlsvc/servername:1433 Domain\SQL
Для именованных экземпляров, или экземпляров с портом отличным по умолчанию, необходимо также указать порт.
--Reporting Services Service
SETSPN -S http/servername Domain\SSRS
SETSPN -S http/servername.domain.com Domain\SSRS
SPN должен устанавливаться согласно полному имени домена FQDN. Если доступ осуществляется по псевдониму DNS или host header то их тоже следует зарегистрировать
SETSPN -S http/www.reports.com Domain\SSRS
--Analysis Services Service
SETSPN -S msolapsvc.3/servername Domain\SSAS
В Active Directory также стоит проверить что у пользователей не стоит опция Аккаунт не может быть делегирован
Также необходимо настроить аккаунт под которым будет работать Reporting для делегирования
То же самое необходимо сделать для аккаунтов SQL Server и Analyses Services
И внести изменения в RSReportServer.config
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate/>
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
И как всегда немного юмора..
Приход блондинка в секс-шоп и грит: - Хочу вернуть вам этот вибратор Продавец спрашивает: - А в чем проблема? Блондинка: - Да он мне все зубы повыбивал.