Reporting Services의 인증Authentication in Reporting Services

인증은 사용자의 권한을 ID에 설정하는 과정입니다.Authentication is the process of establishing a user's right to an identity. 사용자를 인증하는 데 사용할 수 있는 많은 방법이 있습니다.There are many techniques that you can use to authenticate a user. 가장 일반적인 방법은 암호를 사용하는 것입니다.The most common way is to use passwords. 예를 들어 폼 인증을 구현하는 경우 사용자에게 자격 증명을 요구(대개 로그인 이름과 암호를 요구하는 인터페이스를 통해 이루어짐)한 다음 데이터베이스 테이블이나 구성 파일과 같은 데이터 저장소와 대조하여 사용자를 검사하도록 구현합니다.When you implement Forms Authentication, for example, you want an implementation that queries users for credentials (usually by some interface that requests a login name and password) and then validates users against a data store, such as a database table or configuration file. 자격 증명을 확인할 수 없는 경우 인증 프로세스가 실패하고 사용자는 익명 ID를 가집니다.If the credentials can't be validated, the authentication process fails and the user will assume an anonymous identity.

Reporting Services의 사용자 지정 인증Custom Authentication in Reporting Services

Reporting ServicesReporting Services에서 Windows 운영 체제는 통합 보안을 통해 또는 사용자 자격 증명의 명시적인 수신과 검사를 통해 사용자 인증을 처리합니다.In Reporting ServicesReporting Services, the Windows operating system handles the authentication of users either through integrated security or through the explicit reception and validation of user credentials. 사용자 지정 인증은 Reporting ServicesReporting Services에서 개발하여 추가 인증 체계를 지원할 수 있습니다.Custom authentication can be developed in Reporting ServicesReporting Services to support additional authentication schemes. 보안 확장 프로그램 인터페이스 IAuthenticationExtension2을 통해 이 작업을 수행할 수 있습니다.This is made possible through the security extension interface IAuthenticationExtension2. 모든 확장 프로그램은 보고서 서버에서 배포되고 사용되는 모든 확장 프로그램에 대한 IExtension 기본 인터페이스에서 상속됩니다.All extensions inherit from the IExtension base interface for any extension deployed and used by the report server. IExtensionIAuthenticationExtension2Microsoft.ReportingServices.Interfaces 네임스페이스의 멤버입니다.IExtension, as well as IAuthenticationExtension2, are members of the Microsoft.ReportingServices.Interfaces namespace.

Reporting ServicesReporting Services에서 보고서 서버와 대조하여 인증하는 기본적인 방법은 LogonUser 메서드입니다.The primary way to authenticate against a report server in Reporting ServicesReporting Services is the LogonUser method. Reporting Services 웹 서비스의 이 멤버는 확인을 위해 사용자 자격 증명을 보고서 서버에 전달하는 데 사용할 수 있습니다.This member of the Reporting Services Web service can be used to pass user credentials to a report server for validation. 기본 보안 확장 프로그램 구현 하 IAuthenticationExtension2.LogonUser 사용자 지정 인증 코드가 포함 되어 있습니다.Your underlying security extension implements IAuthenticationExtension2.LogonUser which contains your custom authentication code. 폼 인증 예제에서 LogonUser, 데이터베이스에 제공된 된 자격 증명 및 사용자 지정 사용자 저장소에 대해은 인증 검사를 수행 하는입니다.In the Forms Authentication sample, LogonUser, which performs an authentication check against the supplied credentials and a custom user store in a database. 구현 예 LogonUser 다음과 같습니다.An example of an implementation of LogonUser looks like this:

public bool LogonUser(string userName, string password, string authority)  
{  
   return AuthenticationUtilities.VerifyPassword(userName, password);  
}  

다음 예제 함수는 제공된 자격 증명을 확인하는 데 사용됩니다.The following sample function is used to verify the supplied credentials:


internal static bool VerifyPassword(string suppliedUserName,  
   string suppliedPassword)  
{   
   bool passwordMatch = false;  
   // Get the salt and pwd from the database based on the user name.  
   // See "How To: Use DPAPI (Machine Store) from ASP.NET," "How To:  
   // Use DPAPI (User Store) from Enterprise Services," and "How To:  
   // Create a DPAPI Library" for more information about how to use  
   // DPAPI to securely store connection strings.  
   SqlConnection conn = new SqlConnection(  
      "Server=localhost;" +   
      "Integrated Security=SSPI;" +  
      "database=UserAccounts");  
   SqlCommand cmd = new SqlCommand("LookupUser", conn);  
   cmd.CommandType = CommandType.StoredProcedure;  

   SqlParameter sqlParam = cmd.Parameters.Add("@userName",  
       SqlDbType.VarChar,  
       255);  
   sqlParam.Value = suppliedUserName;  
   try  
   {  
      conn.Open();  
      SqlDataReader reader = cmd.ExecuteReader();  
      reader.Read(); // Advance to the one and only row  
      // Return output parameters from returned data stream  
      string dbPasswordHash = reader.GetString(0);  
      string salt = reader.GetString(1);  
      reader.Close();  
      // Now take the salt and the password entered by the user  
      // and concatenate them together.  
      string passwordAndSalt = String.Concat(suppliedPassword, salt);  
      // Now hash them  
      string hashedPasswordAndSalt =  
         FormsAuthentication.HashPasswordForStoringInConfigFile(  
         passwordAndSalt,  
         "SHA1");  
      // Now verify them. Returns true if they are equal.  
      passwordMatch = hashedPasswordAndSalt.Equals(dbPasswordHash);  
   }  
   catch (Exception ex)  
   {  
       throw new Exception("Exception verifying password. " +  
          ex.Message);  
   }  
   finally  
   {  
       conn.Close();  
   }  
   return passwordMatch;  
}  

인증 흐름Authentication Flow

Reporting Services 웹 서비스 웹 포털 및 보고서 서버에서 폼 인증을 사용 하도록 설정 하려면 사용자 지정 인증 확장 프로그램을 제공 합니다.The Reporting Services Web service provides custom authentication extensions to enable Forms Authentication by the web portal and the report server.

Reporting Services 웹 서비스의 LogonUser 메서드는 인증을 위해 자격 증명을 보고서 서버에 제출하는 데 사용됩니다.The LogonUser method of the Reporting Services Web service is used to submit credentials to the report server for authentication. 웹 서비스에서는 검사된 로그온 요청에 대해 HTTP 헤더를 사용하여 서버에서 클라이언트로 인증 티켓("쿠키"라고 함)을 전달합니다.The Web service uses HTTP headers to pass an authentication ticket (known as a "cookie") from the server to the client for validated logon requests.

다음 그림은 사용자 지정 인증 확장 프로그램을 사용하도록 구성된 보고서 서버와 함께 배포된 응용 프로그램의 경우 웹 서비스에 사용자를 인증하는 메서드를 나타냅니다.The following illustration depicts the method of authenticating users to the Web service when your application is deployed with a report server configured to use a custom authentication extension.

Reporting Services 보안 인증 흐름Reporting Services security authentication flow

그림 2에 나온 대로 인증 프로세스는 다음과 같습니다.As shown in Figure 2, the authentication process is as follows:

  1. 클라이언트 응용 프로그램에서 사용자를 인증하도록 웹 서비스 LogonUser 메서드를 호출합니다.A client application calls the Web service LogonUser method to authenticate a user.

  2. 웹 서비스를 호출 하는 LogonUser 보안 확장 프로그램의 메서드 특히, 구현 하는 클래스 IAuthenticationExtension2합니다.The Web service makes a call to the LogonUser method of your security extension, specifically, the class that implements IAuthenticationExtension2.

  3. LogonUser 구현에서 사용자 저장소 또는 보안 기관에 있는 사용자 이름과 암호를 검사합니다.Your implementation of LogonUser validates the user name and password in the user store or security authority.

  4. 인증이 성공하면 웹 서비스에서 쿠키를 만들고 세션을 위해 관리합니다.Upon successful authentication, the Web service creates a cookie and manages it for the session.

  5. 웹 서비스는 HTTP 헤더에서 인증 티켓을 호출 응용 프로그램에 반환합니다.The Web service returns the authentication ticket to the calling application on the HTTP header.

    웹 서비스에서 보안 확장 프로그램을 통해 사용자를 성공적으로 인증하면 이후 요청에 사용되는 쿠키를 생성합니다.When the Web service successfully authenticates a user through the security extension, it generates a cookie that is used for subsequent requests. 보고서 서버에 보안 기관이 포함되어 있지 않으므로 쿠키는 사용자 지정 보안 기관 내에 계속 유지되지 않을 수 있습니다.The cookie may not persist within the custom security authority because the report server does not own the security authority. 쿠키는 LogonUser 웹 서비스 메서드에서 반환되고 이후 웹 서비스 메서드 호출 및 URL 액세스에서 사용됩니다.The cookie is returned from the LogonUser Web service method and is used in subsequent Web service method calls and in URL access.

참고

전송 중 쿠키의 노출을 피하려면 LogonUser에서 반환된 인증 쿠키를 SSL(Secure Sockets Layer) 암호화를 사용하여 안전하게 전송해야 합니다.In order to avoid compromising the cookie during transmission, authentication cookies returned from LogonUser should be transmitted securely using Secure Sockets Layer (SSL) encryption.

사용자 지정 보안 확장 프로그램이 설치되어 있는 경우 URL 액세스를 통해 보고서 서버에 액세스하면 IIS(인터넷 정보 서비스) 및 ASP.NETASP.NET에서 인증 티켓 전송을 자동으로 관리합니다.If you access the report server through URL access when a custom security extension is installed, Internet Information Services (IIS) and ASP.NETASP.NET automatically manage the transmission of the authentication ticket. SOAP API를 통해 보고서 서버에 액세스하려는 경우에는 프록시 클래스 구현에서 인증 티켓 관리를 추가로 지원해야 합니다.If you are accessing the report server through the SOAP API, your implementation of the proxy class must include additional support for managing the authentication ticket. SOAP API를 사용하고 인증 티켓을 관리하는 방법은 "웹 서비스에서 사용자 지정 보안 사용"을 참조하십시오.For more information about using the SOAP API and managing the authentication ticket, see "Using the Web Service with Custom Security."

폼 인증Forms Authentication

폼 인증은 인증되지 않은 사용자를 HTML 양식으로 지정하는 ASP.NETASP.NET 인증 유형입니다.Forms Authentication is a type of ASP.NETASP.NET authentication in which an unauthenticated user is directed to an HTML form. 사용자가 자격 증명을 제공하면 인증 티켓이 포함된 쿠키가 발행됩니다.Once the user provides credentials, the system issues a cookie containing an authentication ticket. 이후에 요청이 있으면 먼저 쿠키 검사를 통해 사용자가 보고서 서버에서 이미 인증되었는지 여부에 대한 확인이 이루어집니다.On later requests, the system first checks the cookie to see if the user was already authenticated by the report server.

Reporting ServicesReporting Services는 Reporting Services API를 통해 사용 가능한 보안 확장성 인터페이스를 사용하여 폼 인증을 지원하도록 확장할 수 있습니다. can be extended to support Forms Authentication using the security extensibility interfaces available through the Reporting Services API. Reporting ServicesReporting Services를 확장하여 폼 인증을 사용할 경우 보고서 서버와의 모든 통신에 대해 SSL(Secure Sockets Layer)을 사용하여 악의적인 사용자가 다른 사용자의 쿠키에 액세스하지 못하도록 해야 합니다.If you extend Reporting ServicesReporting Services to use Forms Authentication, use Secure Sockets Layer (SSL) for all communications with the report server to prevent malicious users from gaining access to another user's cookie. SSL을 사용하면 클라이언트와 보고서 서버 간의 상호 인증이 가능하며 이 두 컴퓨터 간의 통신 내용을 다른 컴퓨터에서 읽지 못하도록 할 수 있습니다.SSL enables clients and a report server to authenticate each other and to ensure that no other computers can read the contents of communications between the two computers. SSL 연결을 통해 클라이언트에서 전송되는 모든 데이터는 암호화되므로 악의적인 사용자가 보고서 서버로 전송된 암호나 데이터를 가로챌 수 없습니다.All data sent from a client through an SSL connection is encrypted so that malicious users cannot intercept passwords or data sent to a report server.

폼 인증은 일반적으로 Windows 이외의 플랫폼에 대한 계정 및 인증을 지원하기 위해 구현됩니다.Forms Authentication is generally implemented to support accounts and authentication for platforms other than Windows. 보고서 서버 액세스를 요청하는 사용자는 그래픽 인터페이스를 볼 수 있으며, 제공된 자격 증명은 인증을 위해 보안 기관에 제출됩니다.A graphical interface is presented to a user who requests access to a report server, and the supplied credentials are submitted to a security authority for authentication.

폼 인증에서는 사람이 직접 자격 증명을 입력해야 합니다.Forms Authentication requires that a person is present to enter credentials. Reporting Services 웹 서비스와 직접 통신하는 무인 응용 프로그램의 경우 폼 인증에 사용자 지정 인증 체계를 함께 사용해야 합니다.For unattended applications that communicate directly with the Reporting Services Web service, Forms Authentication must be combined with a custom authentication scheme.

폼 인증은 다음의 경우 Reporting ServicesReporting Services에 적합합니다.Forms Authentication is appropriate for Reporting ServicesReporting Services when:

  • MicrosoftMicrosoft Windows 계정이 없는 사용자를 저장하고 인증해야 하는 경우 및You need to store and authenticate users that do not have MicrosoftMicrosoft Windows accounts, and

  • 웹 사이트의 다양한 페이지 사이에서 고유의 사용자 인터페이스 양식을 로그온 페이지로 제공해야 하는 경우You need to provide your own user interface form as a logon page between different pages on a Web site.

    폼 인증을 지원하는 사용자 지정 보안 확장 프로그램을 작성할 때 다음을 고려하십시오.Consider the following when writing a custom security extension that supports Forms Authentication:

  • 폼 인증을 사용하는 경우 IIS(인터넷 정보 서비스)에서 보고서 서버 가상 디렉터리에 대해 익명 액세스를 사용하도록 설정해야 합니다.If you use Forms Authentication, anonymous access must be enabled on the report server virtual directory in Internet Information Services (IIS).

  • ASP.NETASP.NET 인증은 폼 인증으로 설정해야 합니다. authentication must be set to Forms. 보고서 서버의 경우 Web.config 파일에서 ASP.NETASP.NET 인증을 구성합니다.You configure ASP.NETASP.NET authentication in the Web.config file for the report server.

  • Reporting ServicesReporting Services는 Windows 인증 또는 사용자 지정 인증으로 사용자를 인증하고 권한을 부여할 수 있으며, 두 가지 인증을 모두 사용할 수는 없습니다. can authenticate and authorize users with either Windows Authentication or custom authentication, but not both. Reporting ServicesReporting Services에서는 여러 보안 확장 프로그램을 동시에 사용할 수 없습니다. does not support simultaneous use of multiple security extensions.

참고 항목See Also

보안 확장 프로그램 구현Implementing a Security Extension