사용자 지정 보안 확장 프로그램 설치 방법How to install custom security extensions

이 항목 적용 대상:THIS TOPIC APPLIES TO: 예SQL Server Reporting Services(2016 이상)SQL Server Reporting Services (2016 and later) 예Power BI 보고서 서버Power BI Report Server 예SQL Server Reporting Services(2016 이상)SQL Server Reporting Services (2016 and later) 예Power BI 보고서 서버Power BI Report Server

Reporting Services 2016은 새로운 Odata API를 호스트하고 모바일 보고서 및 KPI와 같은 새 보고서 작업 부하를 호스트하기 위해 새 웹 포털을 도입하였습니다.Reporting Services 2016 introduced a new web portal in order to host new Odata APIs and also host new report workloads such as mobile reports and KPIS. 이 새로운 포털은 최신 기술을 사용하며, 별도의 프로세스로 실행하여 친숙한 ReportingServicesService로부터 격리됩니다.This new portal relies on newer technologies and is isolated from the familiar ReportingServicesService by running in a separate process. 이 프로세스는 ASP.NET 호스팅 응용 프로그램이 아니므로 기존 사용자 지정 보안 확장 프로그램에서의 가정을 중단합니다.This process is not an ASP.NET hosted application and as such breaks assumptions from existing custom security extensions. 또한 사용자 지정 보안 확장 프로그램에 대한 현재 인터페이스는 외부 컨텍스트가 전달되는 것을 허용하지 않아 구현자는 잘 알려진 전역 ASP.NET 개체를 검사해야만 하며, 이를 위해 인터페이스를 일부 변경해야 합니다.Moreover, the current interfaces for custom security extensions don't allow for any external context to be passed-in, leaving implementers with the only choice to inspect well-known global ASP.NET Objects, this required some changes to the interface.

변경된 것은?What Changed?

인증과 관련된 의사 결정을 위해 확장 프로그램에서 사용되는 더 많은 공용 속성을 포함한 IRSRequestContext를 제공하는 구현 가능한 새 인터페이스가 도입되었습니다.A new interface was introduced that can be implemented which provides an IRSRequestContext providing the more common properties used by extensions to make decisions related to authentication.

이전 버전에서 보고서 관리자는 프런트 엔드이며 자체 사용자 지정 로그인 페이지로 구성될 수 있습니다.In previous versions, Report Manager was the front-end and could be configured with its own custom login page. Reporting Services 2016에서는 reportserver에서 호스트되는 한 페이지만 지원되며 두 응용 프로그램을 모두 인증해야 합니다.In Reporting Services 2016, only one page hosted by reportserver is supported and should authenticate to both applications.

구현Implementation

이전 버전에서 확장 프로그램은 ASP.NET 개체를 쉽게 사용할 수 있는 공용 가정을 사용합니다.In previous versions, extensions could rely on a common assumption that ASP.NET objects would be readily available. 새 포털은 ASP.NET에서 실행되지 않으므로, 확장 프로그램에서 개체가 NULL이 되는 문제가 발생할 수 있습니다.Since the new portal does not run in ASP.NET, the extension might hit issues with objects being NULL.

가장 일반적인 예는 헤더 및 쿠키와 같은 요청 정보를 읽는 HttpContext.Current에 액세스하는 것입니다.The most generic example is accessing HttpContext.Current to read request information such as headers and cookies. 확장 프로그램이 동일한 의사 결정을 하도록 허용하기 위해 요청 정보를 제공하고 포털에서 인증할 때 호출되는 새로운 방법을 확장 프로그램에 도입했습니다.In order to allow extensions to make the same decisions we introduced a new method in the extension that provides request information and is called when authenticating from the portal.

확장 프로그램은 이를 이용하기 위해 IAuthenticationExtension2 인터페이스를 구현해야 합니다.Extensions have to implement the IAuthenticationExtension2 interface in order to leverage this. 확장 프로그램은 reportserver 컨텍스트에서 호출되고 웹 호스트 프로세스에서 사용되는 것처럼 GetUserInfo 메서드의 두 버전을 모두 구현해야 합니다.The extensions will need to implement both versions of GetUserInfo method, as is called by the reportserver context and other used in webhost process. 아래 샘플에 reportserver로 해결된 ID가 사용되는 포털의 간단한 구현 중 하나가 나와 있습니다.The sample below shows one of the simple implementations for the portal where the identity resolved by the reportserver is the one used.

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;
}

배포 및 구성Deployment and Configuration

사용자 지정 보안 확장 프로그램에 필요한 기본 구성은 이전 릴리스와 동일합니다.The basic configurations needed for custom security extension are the same as previous releases. web.config 및 rsreportserver.config에 대한 변경이 필요합니다. 자세한 내용은 보고서 서버에서 사용자 지정 또는 폼 인증 구성을 참조하세요.Changes are needed for web.config and rsreportserver.config: For more information, see Configure Custom or Forms Authentication on the Report Server.

보고서 관리자에 대한 별도의 web.config는 없어지고, 포털은 reportserver 엔드포인트와 동일한 설정을 상속하게 됩니다.There is no longer a separate web.config for the Report Manager, the portal will inherit the same settings as the reportserver endpoint.

컴퓨터 키Machine Keys

인증 쿠키의 암호를 해독해야 하는 폼 인증의 경우 두 프로세스 모두 같은 컴퓨터 키 및 암호 해독 알고리즘을 사용하여 구성해야 합니다.For the case of Forms authentication which requires the decryption of the Authentication cookie, both processes need to be configured with the same machine key and decryption algorithm. 이는 이전에 설치한 Reporting Services를 스케일 아웃 환경에서 작동한 사용자에게 익숙한 단계였으나, 이제는 단일 컴퓨터에 배포하는 경우에도 필요한 단계입니다.This was a step familiar to those who had previously setup Reporting Services to work on scale-out environments, but now is a requirement even for deployments on a single machine.

배포에 대해 특정한 유효성 검사 키를 사용해야 합니다. IIS(인터넷 정보 서비스) 관리자와 같은 키를 생성하는 여러 가지 도구가 있습니다.You should use a validation key specific for you deployment, there are several tools to generate the keys like Internet Information Services Manager (IIS). 다른 도구는 인터넷에서 찾을 수 있습니다.Other tools can be found on the internet.

SQL Server Reporting Services 2017 이상SQL Server Reporting Services 2017 and later

\ReportServer\rsReportServer.config\ReportServer\rsReportServer.config

<configuration> 아래에 추가합니다.Add under <configuration>.

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

SQL Server Reporting Services 2016SQL Server Reporting Services 2016

\ReportServer\web.config\ReportServer\web.config

<system.web> 아래에 추가합니다.Add under <system.web>.

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

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

<configuration> 아래에 추가합니다.Add under <configuration>.

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

Power BI 보고서 서버Power BI Report Server

현재 2017년 6월(빌드 14.0.600.301) 릴리스부터 사용할 수 있습니다.This is available as of the June 2017 (Build 14.0.600.301) release.

\ReportServer\rsReportServer.config\ReportServer\rsReportServer.config

<configuration> 아래에 추가합니다.Add under <configuration>.

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

통과 쿠키 구성Configure Passthrough cookies

새 포털과 reportserver는 일부 작업에 대해 내부 soap API를 사용하여 통신합니다(이전 버전의 보고서 관리자와 유사).The new portal and the reportserver communicate using internal soap APIs for some of its operations (similar to the previous version of the Report Manager). 추가 쿠키를 포털에서 서버로 전달해야 하는 경우 PassThroughCookies 속성을 계속 사용할 수 있습니다.When additional cookies are required to be passed from the portal to the server the PassThroughCookies properties is still available. 자세한 내용은 웹 포털에서 사용자 지정 인증 쿠키를 전달하도록 구성을 참조하세요.For more information, see Configure the Web Portal to Pass Custom Authentication Cookies.

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

다음 단계Next steps

보고서 서버에서 사용자 지정 또는 폼 인증 구성Configure Custom or Forms Authentication on the Report Server
보고서 관리자에서 사용자 지정 인증 쿠키를 전달하도록 구성Configure Report Manager to Pass Custom Authentication Cookies

추가 질문이 있으신가요?More questions? Reporting Services 포럼에서 질문하기Try asking the Reporting Services forum