사용자 지정 보안 확장 프로그램 설치 방법

적용 대상: SQL Server 2016 (13.x) Reporting Services 이상 Power BI Report Server

Reporting Services 2016은 새로운 OData API를 호스트하고 모바일 보고서 및 KPI와 같은 새 보고서 작업 부하를 호스트하기 위해 새 웹 포털을 도입하였습니다. 이 새로운 포털은 최신 기술을 사용하며, Microsoft.ReportingServices.Portal.WebHost.exe라는 별도의 프로세스로 실행되어 친숙한 ReportingServicesService.exe로부터 격리됩니다. 이 프로세스는 ASP.NET 호스팅 애플리케이션이 아니므로 기존 사용자 지정 보안 확장 프로그램에서의 가정을 중단합니다. 또한 사용자 지정 보안 확장 프로그램에 대한 현재 인터페이스는 외부 컨텍스트가 전달되는 것을 허용하지 않아 구현자는 잘 알려진 전역 ASP.NET 개체를 검사해야만 합니다. Microsoft.ReportingServices.Portal.WebHost.exe 프로세스는 ASP.NET 호스팅 애플리케이션이 아니므로 인터페이스를 일부 변경해야 했습니다.

변경 내용

IRSRequestContext를 통해 구현할 수 있는 새로운 인터페이스가 도입되었습니다. 이는 인증과 관련된 의사 결정을 위해 확장 프로그램에서 사용되는 더 일반적인 속성을 제공합니다.

이전 버전에서 보고서 관리자는 프런트 엔드이며 자체 사용자 지정 로그인 페이지로 구성될 수 있습니다. Reporting Services 2016에서는 reportserver에서 호스트되는 한 페이지만 지원되며 두 애플리케이션을 모두 인증해야 합니다.

구현

이전 버전에서 확장 프로그램은 ASP.NET 개체를 쉽게 사용할 수 있는 공용 가정을 사용합니다. 새 포털은 ASP.NET에서 실행되지 않으므로, 확장 프로그램에서 개체가 NULL이 되는 문제가 발생할 수 있습니다.

가장 일반적인 예는 헤더 및 쿠키와 같은 요청 정보를 읽는 데 액세스하는 HttpContext.Current 것입니다. 확장 프로그램이 동일한 의사 결정을 하도록 허용하기 위해 요청 정보를 제공하고 포털에서 인증할 때 호출되는 새로운 방법을 확장 프로그램에 도입했습니다.

사용자 지정 확장은 이 새 인터페이스를 사용하기 위해 IAuthenticationExtension2 인터페이스를 구현해야 합니다. 확장은 두 버전의 GetUserInfo 메서드를 모두 구현해야 합니다. 하나는 reportserver 컨텍스트에서 호출되고 다른 하나는 Microsoft.ReportingServices.Portal.WebHost.exe 프로세스에서 사용되기 때문에 구현해야 합니다. 다음 샘플에서는 reportserver로 해결된 ID가 사용되는 포털의 간단한 구현 중 하나를 보여 줍니다.

public void GetUserInfo(IRSRequestContext requestContext, out IIdentity userIdentity, out IntPtr userId)
{
    userIdentity = null;
    if (requestContext.User != null)
    {
        userIdentity = requestContext.User;
    }

    // initialize a pointer to the current user ID to zero
    userId = IntPtr.Zero;
}

배포 및 구성

사용자 지정 보안 확장 프로그램에 필요한 기본 구성은 이전 릴리스와 동일합니다. web.config 및 rsreportserver.config에 대한 변경이 필요합니다. 자세한 내용은 보고서 서버에서 사용자 지정 또는 양식 인증 구성을 참조하세요.

보고서 관리자에 대한 별도의 web.config가 더 이상 없으므로 포털은 reportserver 엔드포인트와 동일한 설정을 상속합니다.

컴퓨터 키

인증 쿠키의 암호를 해독해야 하는 폼 인증의 경우 두 프로세스 모두 같은 컴퓨터 키 및 암호 해독 알고리즘을 사용하여 구성해야 합니다. 이 단계는 이전에 스케일 아웃 환경에서 작동하도록 Reporting Services를 설정했지만 지금은 단일 컴퓨터에서 배포하기 위한 요구 사항인 사용자에게 익숙합니다.

배포에 대해 특정한 유효성 검사 키를 사용해야 합니다. IIS(인터넷 정보 서비스) 관리자와 같은 키를 생성하는 여러 가지 도구가 있습니다. 다른 도구는 인터넷에서 찾을 수 있습니다.

적용 대상: SQL Server Reporting Services(2017 이상) Power BI Report Server

\ReportServer\RSReportServer.config

RSReportServer.config 파일을 열고 생성한 <machineKey> 요소를 <Configuration> 섹션에 붙여넣습니다. 기본적으로 RSReportServer.config 파일은 Reporting Services 및 \Program Files\Microsoft Power BI Report Server\PBIRS\ReportServer\RSReportServer.config Power BI Report Server에 있습니다\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer\RSReportServer.config.

<MachineKey ValidationKey="[YOUR KEY]" DecryptionKey=="[YOUR KEY]" Validation="AES" Decryption="AES" />

적용 대상: SQL Server Reporting Services(2016)

\ReportServer\web.config

ReportServer에 대한 web.config 파일을 열고 생성한 <machineKey> 요소를 <system.web> 섹션에 붙여넣습니다. 기본적으로 Web.config 파일은 \Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer\web.config에 있습니다.

<machineKey validationKey="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES" />

\RSWebApp\Microsoft.ReportingServices.Portal.exe.config

RSWebApp에 대한 Microsoft.ReportingServices.Portal.WebHost.exe.config 파일을 열고 생성한 <system.web><machineKey> 요소를 <configuration> 섹션에 붙여넣습니다. 기본적으로 Microsoft.ReportingServices.Portal.WebHost.exe.config 파일은 \Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\RSWebApp\Microsoft.ReportingServices.Portal.WebHost.exe.config에 있습니다.

<system.web>
    <machineKey validationKey=="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES" />
</system.web>

통과 쿠키 구성

새 포털과 reportserver는 일부 작업에 대해 내부 soap API를 사용하여 통신합니다(이전 버전의 보고서 관리자와 유사). 포털에서 reportserver로 더 많은 쿠키를 전달해야 하는 경우 PassThroughCookies 속성을 사용할 수 있습니다. 자세한 내용은 사용자 지정 인증 쿠키를 전달하도록 웹 포털 구성을 참조하세요.

<UI>
   <CustomAuthenticationUI>
      <PassThroughCookies>
         <PassThroughCookie>sqlAuthCookie</PassThroughCookie>
      </PassThroughCookies>
   </CustomAuthenticationUI>
</UI>

추가 질문이 있으신가요? Reporting Services 포럼에서 질문하기