Биты и байты.

Биты и байты.

вторник, 10 декабря 2013 г.

Что делать если вас не узнают в SSRS?

Что делать если вас не узнают в Reporting Services или добро пожаловать ANONYMOUS….


Если у вас  например трехзвенная архитектура (клиент-> сервер приложений/отчетов-> сервер реляционной/многомерной БД) и  вы пользуетесь авторизацией Windows
Вы точно столкнетесь с этой задачей, однако на практике она оказывается гораздо проще чем кажется..
при запуске отчета по раздаче прав, который берет  данные с   сервера БД , возникла ошибка

Т.к. здесь возникает второй круг авторизации, первый от клиента к серверу отчетов, второй  от сервера отчетов к серверу БД, схема приблизительно выглядит так

Для решения этой задачи в принципе достаточно настроить авторизацию по протоколу Kerberos,
для этого нужно зарегистрировать в Active Directory  SPN (Service Principal Name) для учетной записи под которой работает сервис  и в итоге получится
Благодаря сопоставлению SPN, определенному в Active Directory (AD), учетная запись Windows, ответственная за службу,
может быть удостоверена и использована для проверки подлинности Kerberos

Вкратце о типах проверки подлинности в Reporting Services можно прочитать здесь

Процесс решения выглядит следующим образом полная версия


Регистрация имени участника-службы для службы сервера отчетов, которая запускается от имени пользователя домена
  1. Установите службы Службы Reporting Services и настройте службу сервера отчетов для запуска от учетной записи пользователя домена. Не забывайте, что пользователи не смогут соединиться с сервером отчетов до тех пор, пока не будут выполнены все описанные ниже шаги.
  2. Войдите на контроллер домена как администратор домена.
  3. Откройте окно командной строки.
  4. Скопируйте следующую команду, заменив заполнители значениями для конкретной сети:
  5. Setspn -s http/<computer-name>.<domain-name>:<port> <domain-user-account>
Например: Setspn -s http/MyReportServer.MyDomain.com:80 MyDomainUser
  1. Выполните команду.
  2. Откройте файл RsReportServer.config и найдите раздел <AuthenticationTypes>.
  3. Добавьте <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>

Kerberos  будет использоваться для Internet Explorer для других браузеров смотрите

И как всегда немного юмора..

Приход блондинка в секс-шоп и грит: - Хочу вернуть вам этот вибратор Продавец спрашивает: - А в чем проблема? Блондинка: - Да он мне все зубы повыбивал.

About