Я пытаюсь внедрить некоторый пользовательский код безопасности в SSRS 2008 (не R2), чтобы разрешить проверку подлинности с помощью форм вместо проверки подлинности Windows.Я основал свое решение на примере кода Microsoft и сумел добиться того, чтобы большая часть его работала абсолютно нормально.Единственная область, в которой у меня возникают проблемы, - это вход по фактическому URL-адресу диспетчера отчетов.
Проблема 1 При использовании URL-адреса http://localhost/Reports_MSSQL2008/
он не принимает UILogon.aspx
страницу, которую я скопировал в папку /Pages
(как указано в примере Microsoft).Я изменил файл web.config в папке ReportManager, чтобы он содержал следующее:
<authentication mode="Forms">
<forms loginUrl="UILogon.aspx"
name="sqlAuthCookie"
timeout="60"
slidingExpiration="true"
path="/" />
</authentication>
Я попытался изменить путь, чтобы он совпадал с точным путем к файлу aspx, но все еще не радует !!
Выпуск 2 Из-за проблемы, описанной выше, я попытался просто войти в UILogon и ReportManager через URL, http://localhost/Reports_MSSQL2008/Pages/UILogon.aspx
.Это работает в том, что я получаю доступ к своему пользовательскому коду (UILogon.aspx.cs и IAuthorisation / IAuthentication code) и вижу, что он делает следующее:
- аутентификация / авторизация пользователя
- создание файла cookie
- хранение файла cookie (sqlAuthCookie) в контейнере cookie ответа / запроса
- выполнение response.redirect на странице /Folder.aspx
Проблема в том, что когда response.redirect возвращается в метод GetUserInfo (), HttpContext.Current.User имеет значение null, и cookie больше не существует.Из-за этого возвращается нулевое значение IIdentity (не может установить его для чего-либо еще !!), и SSRS выдает ошибку ...
Microsoft.ReportingServices.Diagnostics.Utilities.AuthenticationExtensionException:
Расширение проверки подлинности выдало непредвиденное исключение или вернуло недопустимое значение: identity == null.
Для информации - при запуске Report Builder / Visual Studio bi proj / URL-адреса веб-службы выполняется точночто мне нужно и работает нормально ...... это просто диспетчер отчетов, который вызывает проблему.