Как настроить/включить проверку подлинности на основе форм в SSRS 2008 RS

У меня есть два отчета: один для внутренних пользователей, а другой для внешних пользователей,

Для внутренних пользователей мне нужно включить проверку подлинности с помощью формы для просмотра отчета вместо создания учетных записей пользователей на сервере.

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

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

изменить файл RSReportServer.config

Шаг 1:-

<Authentication>
    <AuthenticationTypes> 
        <Custom/>
    </AuthenticationTypes>
    <EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>

Шаг 2:-

<Security>
    <Extension Name="Forms" 
Type="Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, 
Microsoft.Samples.ReportingServices.CustomSecurity" >
        <Configuration>
            <AdminConfiguration>
                <UserName>username</UserName>
            </AdminConfiguration>
        </Configuration>
    </Extension>
</Security>
<Authentication>
    <Extension Name="Forms" Type="Microsoft.Samples.ReportingServices.CustomSecurity.AuthenticationExtension, Microsoft.Samples.ReportingServices.CustomSecurity" />
</Authentication>

Шаг 3:-

<UI>
    <CustomAuthenticationUI>
        <loginUrl>/Pages/UILogon.aspx</loginUrl>
        <UseSSL>True</UseSSL>
    </CustomAuthenticationUI>
    <ReportServerUrl>http://<server>/ReportServer</ReportServerUrl>
</UI> 

изменить файл RSSrvPolicy.config

Шаг 4: -

<CodeGroup
class="UnionCodeGroup"
version="1"
Name="SecurityExtensionCodeGroup"
Description="Code group for the sample security extension"
PermissionSetName="FullTrust">
    <IMembershipCondition 
    class="UrlMembershipCondition"
    version="1"
    Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll"
    />
</CodeGroup> 

изменить файл RSMgrPolicy.config

Шаг 5: -

<CodeGroup 
class="FirstMatchCodeGroup" 
version="1" 
PermissionSetName="FullTrust"
Description="This code group grants MyComputer code Execution permission. ">
    <IMembershipCondition 
    class="ZoneMembershipCondition"
    version="1"
    Zone="MyComputer" /> "}*To use Forms Authentication, you need to modify the Web.config files for Report Manager and Report Server

изменить файл Web.config для сервера отчетов

Шаг 6: -

<authentication mode="Forms">
    <forms loginUrl="logon.aspx" name="sqlAuthCookie" timeout="60" path="/">        
    </forms>
</authentication>
Add the following <authorization> element directly after the <authentication> element.
<authorization> 
    <deny users="?" />
</authorization>. 

Файл Web.config для диспетчера отчетов

Шаг 7: -

Disable impersonation by locating the section <identity impersonate= "true" /> and changing it to the following: <identity impersonate="false" />.
Locate the <authentication> element and change the Mode attribute to Forms.
Add the following keys to the <appSettings> element.
<add key="ReportServer" value="<Server Name>"/>
<add key="ReportServerInstance" value="<Instance Name>"/>

URL ссылки https://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2%21Security%20Extension%20Sample&FocusElement=Comment

После выполнения всех вышеперечисленных шагов, когда я пытаюсь зарегистрировать пользователя, я получаю сообщение об ошибке «Ключевое слово не поддерживается: «mssqlserver; интегрированная безопасность».


person karhtik    schedule 20.05.2017    source источник
comment
Чего вы пытаетесь достичь? Я думаю, что есть более простые способы, чем редактирование файлов конфигурации, и вы ошибаетесь   -  person Mikhail Lobanov    schedule 21.05.2017
comment
Мне нужно включить проверку подлинности формы для внутренних пользователей на сервере отчетов вместо проверки подлинности Windows для одного отчета и удалить проверку подлинности для внешних пользователей в другом отчете, чтобы я не хотел создавать учетные записи пользователей на сервере, пожалуйста, направьте меня в правильный путь..!   -  person karhtik    schedule 21.05.2017
comment
Внешние пользователи означают пользователей не из вашего домена? Если да, я могу только сказать, что встроенная безопасность означает проверку подлинности Windows, и вы все еще где-то используете проверку подлинности Windows.   -  person Mikhail Lobanov    schedule 21.05.2017
comment
Да, пользователи не в домене, и они могут получить доступ к этому URL-адресу из любого места без какой-либо аутентификации, а для внутренних (пользователей домена) я должен включить аутентификацию на основе формы. пожалуйста, помогите мне достичь этого   -  person karhtik    schedule 22.05.2017
comment
Ваш вопрос очень интересен, я начну баунти, если никто не поможет вам в течение дня   -  person Mikhail Lobanov    schedule 22.05.2017
comment
У меня есть аналогичная задача, и я добавил локального пользователя и передал его учетные данные клиентскому приложению (аутентификация через API, конечный пользователь не знает учетных данных)   -  person Mikhail Lobanov    schedule 22.05.2017
comment
здесь я собираюсь отображать только отчет/статус, поэтому приложение не используется, поэтому пользователь получит доступ к URL-адресу сервера отчетов в браузере, чтобы просто проверить статус, пожалуйста, помогите удалить аутентификацию, как я добился аутентификации на основе формы для внутреннего пользователей, но имеющих проблемы с доступом к отчету.   -  person karhtik    schedule 22.05.2017
comment
Рассматривали ли вы создание отдельного приложения для внешних пользователей? При этом вы можете использовать средство просмотра отчетов для обертывания отчетов.   -  person Jason Geiger    schedule 07.02.2019
comment
Привет. Чтобы проанализировать это, у меня есть несколько вопросов: вы смотрели официальный MS Doc? Как у вас аутентификация должна так работать? (откуда пользователи/пароли?) Вы сделали страницу UI (страницу для входа) и dll (которые отвечают на вопрос, как нормально работает аутентификация)?   -  person NdsAerith    schedule 12.03.2020


Ответы (2)


Пожалуйста, отметьте этот параметр, чтобы получить прямой доступ без проверки подлинности с помощью формы.

<allow users="*" />

Отметьте эту строку, чтобы показать аутентификацию формы.

<deny users="?" /> 

Настройка web.config в приложении.

 <authorization>
        <allow roles="Administrator" />
        <allow users="*" />
    </authorization>

    <authentication mode="Forms">
        <forms timeout="500000" loginUrl="Login.aspx" />
    </authentication>



    <system.web>
         <httpHandlers>
                <remove verb="*" path="*.asmx" />
                <add verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"   validate="false" />
                <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
                <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
                <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
            </httpHandlers>
            <httpModules>
                <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            </httpModules>
            <webServices>
                <protocols>
                    <add name="HttpGet" />
                    <add name="HttpPost" />
                </protocols>
            </webServices>
        </system.web>
person Saket Yadav    schedule 20.03.2019

Я думаю, что вы, возможно, просто пропустили шаг или где-то сделали небольшую опечатку.

Следуйте этому пошаговому руководству для пользовательской проверки подлинности SSRS 2008 * (здесь указано 2016, но будет работать в 2008, если вы используете правильные каталоги «ReportServer» и т. д.): https://github.com/microsoft/Reporting-Services/tree/master/CustomSecuritySample2016

* Я вижу, вы спрашиваете о 2008 году, но я получил пользовательскую аутентификацию для работы с реализациями SQL Server SSRS 2012 и 2014 годов, используя https://github.com/microsoft/Reporting-Services/tree/master/CustomSecuritySample2016.

Для SSRS 2019 и более поздних версий используйте это как руководство (похожие, но заметные различия): https://github.com/microsoft/Reporting-Services/tree/master/CustomSecuritySample

Вы можете делать некоторые интересные вещи с пользовательскими классами авторизации и аутентификации, и вам не нужна промежуточная форма (просто перенаправьте на Page_Load(), если ваш запрос пользователя содержит правильный токен/куки/зашифрованный материал, который вы хотите проверить на предмет безопасности).

person cfitzg    schedule 21.05.2020
comment
также ... если вы поищите в сети, вы можете узнать, как полностью отключить аутентификацию SSRS. Просто Google, вы найдете это - автор ясно дает понять, что это не рекомендуется для рабочей среды SQL Server SSRS. Я не буду размещать ссылку на него здесь, потому что это опасно, хотя полезно для прототипирования, если вы не подключены к Интернету.. Page_Load() формы (с некоторой безопасностью). - person cfitzg; 21.05.2020