ReportViewer 웹 서버 컨트롤에 대한 연결 및 자격 증명 지정
ReportViewer 컨트롤에서 보고서 서버로의 연결을 지정하는 경우 연결을 설정하는 조건을 알면 도움이 됩니다.
시작 시 ReportViewer 컨트롤이 포함된 웹 페이지가 로드되면 보고서 세션을 설정하고, 보고서 매개 변수 속성을 가져오거나 설정하고, 서버에서 사용할 수 있는 렌더링 확장 프로그램 목록을 검색할 수 있는 컨트롤이 보고서 서버에 연결됩니다.
컨트롤이 AsyncRendering=true 설정으로 실행되는 경우 페이지가 렌더링된 후에 IFrame 개체에 의해 보고서의 HTML이 비동기적으로 검색됩니다.
보고서가 외부 이미지를 참조하는 경우 ReportViewer 컨트롤은 각 요청이 자체 연결에서 수행되는 ReportViewer HTTP 처리기를 사용하여 별도의 요청을 통해 이미지를 검색합니다.
보고서가 렌더링된 후 렌더링된 보고서를 다른 형식으로 내보내면 추가 연결이 발생할 수 있습니다. 내보내기 요청은 별도의 연결을 사용하여 브라우저에서 보고서 서버로 전송됩니다.
이러한 모든 작업의 성공 여부는 ReportViewer 컨트롤에 보고서 서버에 대한 올바른 연결 정보가 있는지에 따라 결정됩니다. 연결 정보를 지정하는 방법은 폼 인증, Windows 인증, 현재 사용자의 자격 증명, ASP.NET 세션 등의 선택 요인에 따라 달라집니다.
연결 지정 방법
서버에 연결하려면 ServerReport 개체에 속성을 설정하거나 연결을 설정하는 인터페이스를 구현한 다음 Web.config 파일에 해당 구현을 지정합니다. ReportViewer 컨트롤은 항상 Web.config 파일을 먼저 읽으며 연결 값이 지정되어 있는 경우 이를 사용합니다.
세션 상태를 사용하는 경우 ServerReport 개체에 속성을 설정할 것인지, 아니면 Web.config 파일에 연결 정보를 지정할 것인지를 선택할 수 있습니다. Web.config에 연결 정보를 지정하는 경우에는 ServerReport 개체에 속성을 설정하지 마십시오.
세션 상태가 해제된 경우 IReportServerConnection 또는 IReportServerConnection2를 구현하고 Web.config 파일에 해당 구현을 지정해야 합니다.
참고 |
---|
연결을 설정하는 사용자 계정에는 보고서 서버에 대한 올바른 역할 할당이 있어야 합니다. 시스템 수준 역할 할당과 항목 수준 역할 할당 모두 광범위한 권한 집합을 만드는 데 사용됩니다. 보고서 서버 역할 할당에 익숙하지 않은 경우 자습서를 참조하여 역할 할당 기본 사항을 배울 수 있습니다. 자세한 내용은 MSDN의 자습서: Reporting Services의 사용 권한 설정을 참조하십시오. |
ServerReport 개체에 속성 설정
디자인 타임에 컨트롤을 Web Form으로 끌 때 ServerReport 개체에 보고서 서버 URL 및 제한 시간 속성을 설정할 수 있습니다.
기본적으로 ReportViewer 웹 서버 컨트롤은 ASP.NET 스레드 사용자로 보고서 서버에 연결됩니다.
모든 사용자가 단일 사용자 계정으로 보고서 서버에 연결하도록 하려는 경우 등에서 다른 사용자로 연결하려면 직렬화 가능 개체에 IReportServerCredentials를 구현하고 해당 개체의 인스턴스를 ReportViewer.ServerReport.ReportServerCredentials로 전달합니다. ASP.NET 페이지가 처리를 마치면 ReportViewer 컨트롤이 보고서 서버에 연결할 수 있으므로 SQL Server 데이터베이스 등에서 ASP.NET 세션이 Out-of-process로 저장되는 경우 개체를 직렬화할 수 있어야 합니다.
ReportViewer.ServerReport.ReportServerCredentials 속성을 직접 설정하는 경우 다음과 같은 두 가지 단점이 있습니다.
ASP.NET 세션을 사용해야 합니다.
ReportViewer 컨트롤이 페이지를 보는 각 사용자에 대해 개체의 인스턴스를 세션에 배치하므로 ASP.NET 세션이 불필요하게 커질 수 있습니다.
Web.config 파일에 IReportServerConnection2의 구현을 지정하여 위의 단점을 피할 수 있습니다.
세션 상태가 해제된 경우 자격 증명을 지정하는 방법에 대한 권장 사항은 이 항목의 ASP.NET 세션이 해제된 경우 자격 증명 저장에 대한 지침을 참조하십시오.
Web.config에 보고서 서버 연결 지정
IReportServerConnection 또는 IReportServerConnection2를 구현할 때는 응용 프로그램 Web.config 파일에 해당 구현을 지정해야 합니다. Web.config 파일은 연결 및 자격 증명 정보가 포함된 개체 유형을 제공합니다.
참고 |
---|
Web.config 파일에는 IReportServerCredentials가 아니라 IReportServerConnection2 또는 IReportServerConnection의 구현을 지정해야 합니다. IReportServerConnection2는 IReportServerCredentials에서 파생되며 사용하려는 보고서 서버 URL, 제한 시간 값 및 모든 사용자 지정 쿠키/HTTP 헤더를 지정하기 위한 다른 속성을 추가합니다. |
ASP.NET 세션이 해제된 경우 IReportServerConnection2가 필요하지만 개체를 세션에 저장하지 않으려는 경우 ASP.NET 세션이 설정된 상태에서 이를 사용할 수 있습니다. 자세한 내용 및 코드 예는 IReportServerConnection2에 대한 프로그래밍 참조 항목을 참조하십시오. Web.config에 키를 추가하는 방법은 ReportViewer에 대한 Web.config 설정을 참조하십시오.
다음 표에서는 자격 증명 및 연결 정보를 제공하는 인터페이스를 요약합니다.
인터페이스 | 설명 |
---|---|
IReportServerCredentials |
현재 사용자로 연결하지 않으려는 경우 보고서 서버에 연결하기 위해 ServerReport 개체가 사용하는 자격 증명을 이 인터페이스를 통해 지정할 수 있습니다. 기본적으로 ReportViewer 컨트롤은 ASP.NET 스레드 사용자로 보고서 서버에 연결됩니다. ReportViewer.ServerReport.ReportServerCredentials를 IReportServerCredentials의 사용자 고유 구현 인스턴스로 설정하여 다른 사용자를 지정할 수 있습니다. |
IReportServerConnection |
이 인터페이스는 IReportServerCredentials에서 상속되며 보고서 서버 URL 및 제한 시간 속성을 지정하기 위한 추가 멤버를 제공합니다. |
IReportServerConnection2 |
이 인터페이스는 IReportServerConnection에서 상속되며 보고서 서버에서 Single Sign-On 제품을 사용하는 경우 유용한 사용자 지정 쿠키 또는 헤더를 지정하기 위한 추가 멤버를 제공합니다. |
ASP.NET 세션이 해제된 경우 자격 증명 저장에 대한 지침
IReportServerConnection2를 구현할 때는 사용자 자격 증명을 클래스에 저장하지 마십시오. 자격 증명을 직렬화 가능 개체에 저장하면 사용자 이름과 암호가 ASP.NET 세션에 대해 직렬화되고 SQL Server 데이터베이스 또는 다른 상태 서버에 저장됩니다. 자격 증명을 직렬화한다고 해서 반드시 보안상 위험한 것은 아니지만 자격 증명을 세션 데이터로 저장함으로 인해 공격 노출 영역이 증가됩니다.
자격 증명을 다른 세션 데이터와 함께 저장하지 않도록 하는 방법의 예는 다음과 같습니다.
구성 파일 또는 기타 구성 저장소에서 저장된 자격 증명을 읽습니다. 자세한 내용 및 코드 예는 IReportServerCredentials에 대한 프로그래밍 참조 항목을 참조하십시오.
ASP.NET 요청에서 HTTP 쿠키를 읽어 클라이언트에 따라 달라지는 자격 증명을 제공합니다.
참고 |
---|
클래스 외부에 자격 증명을 유연하게 저장할 수 있지만 같은 보고서 세션의 후속 요청에 대해 동일한 자격 증명이 반환되도록 해야 합니다. |
참고 항목
참조
IReportServerCredentials
IReportServerConnection2
개념
ReportViewer에 대한 Web.config 설정
ReportViewer에 비동기 렌더링 구성
서버 보고서에 대한 배포 고려 사항
ReportViewer에 원격 처리 구성
ReportViewer 컨트롤 추가 및 구성