방법: 클라이언트 응용 프로그램 서비스 구성

이 항목에서는 Visual Studio 프로젝트 디자이너를 사용하여 클라이언트 응용 프로그램 서비스를 활성화하고 구성하는 방법에 대해 설명합니다. 클라이언트 응용 프로그램 서비스를 사용하여 사용자에 대한 유효성을 검사하고 기존 Microsoft Ajax 응용 프로그램 서비스에서 사용자 역할 및 설정을 검색할 수 있습니다. 구성이 완료되면 클라이언트 응용 프로그램 서비스 개요의 설명과 같이 응용 프로그램 코드에서 활성화된 서비스에 액세스할 수 있습니다. Microsoft Ajax 응용 프로그램 서비스에 대한 자세한 내용은 ASP.NET 응용 프로그램 서비스 개요를 참조하십시오.

클라이언트 응용 프로그램 서비스는 프로젝트 디자이너서비스 페이지에서 활성화하고 구성할 수 있습니다. 서비스 페이지에서는 프로젝트의 App.config 파일에 있는 값을 업데이트합니다. 프로젝트 디자이너에 액세스하려면 프로젝트 메뉴의 속성 명령을 사용합니다. 서비스 페이지에 대한 자세한 내용은 프로젝트 디자이너, 서비스 페이지를 참조하십시오. 프로젝트 디자이너에 대한 자세한 내용은 프로젝트 디자이너 소개를 참조하십시오.

다음 절차에서는 클라이언트 응용 프로그램 서비스에 대한 기본 구성을 수행하는 방법에 대해 설명합니다. 고급 구성에 대해서는 다른 단원에서 설명합니다.

클라이언트 응용 프로그램 서비스를 구성하려면

  1. 솔루션 탐색기에서 프로젝트 노드를 선택한 다음 프로젝트 메뉴에서 속성을 클릭합니다.

    프로젝트 디자이너가 나타납니다.

  2. 서비스 탭을 클릭합니다. 다음 그림과 같이 서비스 페이지가 나타납니다.

    프로젝트 디자이너의 서비스 탭

  3. 서비스 페이지에서 클라이언트 응용 프로그램 서비스 사용을 선택합니다.

    참고

    클라이언트 응용 프로그램 서비스에는 정식 버전의 .NET Framework가 필요하며 .NET Framework 클라이언트 프로필에서는 이 서비스가 지원되지 않습니다. 클라이언트 응용 프로그램 서비스 사용 확인란이 선택되지 않은 경우 대상 프레임워크가 .NET Framework 3.5 이상으로 설정되었는지 확인하십시오. C#에서 대상 프레임워크 설정을 보려면 프로젝트 디자이너를 연 다음 응용 프로그램 페이지를 클릭합니다. Visual Basic에서 대상 프레임워크 설정을 보려면 프로젝트 디자이너를 열고 컴파일 페이지를 클릭한 다음 고급 컴파일 옵션을 클릭합니다.

  4. 고유한 로그인 컨트롤 또는 대화 상자를 제공하려는 경우에는 폼 인증 사용을 선택하고, 운영 체제에서 제공하는 ID를 사용하려면 Windows 인증 사용을 선택합니다. 자세한 내용은 클라이언트 응용 프로그램 서비스 개요를 참조하십시오.

    참고

    Windows 인증 사용을 선택하면 클라이언트 응용 프로그램 서비스가 SQL Server Compact Edition 버전 3.5 데이터베이스를 사용하도록 자동으로 구성됩니다. 이는 다음 단원에 설명된 것처럼 서비스의 고급 설정 대화 상자에 표시됩니다. 폼 인증 사용을 선택하는 경우에는 사용자 지정 연결 문자열 사용 설정이 자동으로 지워지지 않습니다. 이로 인해 SQL Server Compact 3.5 데이터베이스가 이미 Windows 인증에서 사용되도록 생성된 경우 오류가 발생할 수 있습니다. 이러한 오류를 수정하려면 서비스의 고급 설정 대화 상자에서 사용자 지정 연결 문자열 사용 설정을 지웁니다.

  5. 폼 인증 사용을 선택한 경우 인증 서비스 위치 상자에서 파일 이름을 제외한 서비스 호스트의 URL을 지정합니다. 디자이너에서는 값을 구성 파일에 쓸 때 표준 파일 이름(Authentication_JSON_AppService.axd)을 자동으로 추가합니다.

  6. 필요에 따라 폼 인증 사용을 선택한 경우 자격 증명 공급자 상자에 값을 지정할 수 있습니다. 자격 증명 공급자는 IClientFormsAuthenticationCredentialsProvider 인터페이스를 구현해야 합니다. 자격 증명 공급자를 사용하면 다른 응용 프로그램 코드에서 로그인 사용자 인터페이스를 분리하여 여러 응용 프로그램에 사용할 단일 로그인 대화 상자를 만들 수 있습니다. 자세한 내용은 방법: 클라이언트 응용 프로그램 서비스에서 사용자 로그인 구현을 참조하십시오.

    자격 증명 공급자를 지정하는 경우에는 어셈블리로 한정된 형식 이름으로 지정해야 합니다. 자세한 내용은 Type.AssemblyQualifiedName어셈블리 이름을 참조하십시오. 가장 단순한 형태의 어셈블리로 한정된 형식 이름은 다음 예제의 경우와 유사합니다.

    MyNamespace.MyLoginClass, MyAssembly
    
  7. 역할 서비스 위치웹 설정 서비스 위치 텍스트 상자에서 파일 이름을 제외한 각 서비스의 서비스 위치를 지정합니다. 디자이너에서는 값을 구성 파일에 쓸 때 표준 파일 이름(Role_JSON_AppService.axd 및 Profile_JSON_AppService.axd)을 자동으로 추가합니다.

  8. 필요에 따라 고급을 클릭하여 로컬 캐싱 동작 같은 고급 설정을 수정합니다. 자세한 내용은 다음 절차를 참조하십시오.

고급 구성

다음 절차에서는 보다 덜 일반적인 시나리오에 대해 클라이언트 응용 프로그램 서비스를 구성하는 방법에 대해 설명합니다. 예를 들어 이러한 구성 옵션을 공개적인 위치에 배포된 응용 프로그램에 사용하거나 암호화된 SQL Server Compact Edition 버전 3.5 데이터베이스를 로컬 데이터 캐시로 사용할 수 있습니다.

클라이언트 응용 프로그램 서비스의 고급 설정을 구성하려면

  1. 프로젝트 디자이너서비스 페이지에서 고급을 클릭합니다.

    그러면 다음 그림과 같이 서비스의 고급 설정 대화 상자가 나타납니다. 이 대화 상자에 대한 자세한 내용은 서비스의 고급 설정 대화 상자를 참조하십시오.

    서비스의 고급 설정 대화 상자

  2. 오프라인으로 로그인할 수 있도록 로컬에 암호 해시 저장을 선택하거나 해제합니다. 이 옵션을 선택하면 암호화된 형태의 사용자 암호가 로컬로 캐시됩니다. 이는 응용 프로그램의 오프라인 모드를 구현하는 경우에 유용합니다. 이 옵션을 선택하면 IsOffline 속성이 true로 설정되어 있어도 사용자에 대해 유효성 검사를 수행할 수 있습니다. 오프라인 모드에 대한 자세한 내용은 방법: 클라이언트 응용 프로그램 서비스에서 오프라인으로 작업을 참조하십시오.

  3. 서버 쿠키가 만료될 때마다 다시 사용자 로그온을 선택하거나 해제합니다. 인증 쿠키는 원격 서비스에 구성되며 사용자 로그인이 활성 상태로 유지되는 시간을 나타냅니다. 쿠키를 구성하는 방법에 대한 자세한 내용은 authentication 요소에 대한 forms 요소(ASP.NET 설정 스키마)에서 timeout 특성을 참조하십시오.

    이 옵션을 선택하는 경우 인증 쿠키가 만료된 후 원격 역할 또는 웹 설정 서비스에 액세스하려고 하면 WebException이 throw됩니다. 이 경우 이 예외를 처리하고 사용자에 대한 유효성을 다시 검사하는 로그인 대화 상자를 표시할 수 있습니다. 이러한 동작에 대한 예제는 연습: 클라이언트 응용 프로그램 서비스 사용을 참조하십시오. 이 옵션은 공개적인 위치에 배포된 응용 프로그램의 경우 응용 프로그램을 사용한 후 실행 상태로 유지한 사용자가 계속해서 인증된 상태로 유지되지 않도록 하는 데 유용합니다.

    이 옵션을 해제하고 인증 쿠키가 만료된 후 원격 서비스에 대해 액세스를 시도하면 사용자에 대한 유효성 재검사가 자동으로 수행됩니다.

  4. 역할 서비스 캐시 제한 시간의 값을 지정합니다. 역할이 자주 업데이트되는 경우에는 이 시간 간격을 작은 값으로 설정하고 이따금씩 업데이트되는 경우에는 큰 값으로 설정합니다. 오프라인 모드를 구현하는 경우에는 시간 간격을 큰 값으로 설정하여 응용 프로그램이 오프라인 상태인 동안 역할 정보가 만료되지 않도록 합니다.

    IsInRole 메서드를 호출하면 역할 서비스가 캐시된 역할 값이나 역할 서비스에 액세스합니다. 캐시를 프로그래밍 방식으로 다시 설정하고 이 메서드가 원격 서비스에 액세스하도록 하려면 ResetCache 메서드를 호출합니다.

  5. 사용자 지정 연결 문자열 사용을 선택하거나 해제합니다. 자세한 내용은 다음 절차를 참조하십시오.

로컬 캐시에 대해 데이터베이스를 사용하도록 클라이언트 응용 프로그램 서비스를 구성하려면

  1. 프로젝트 디자이너서비스 페이지에서 고급을 클릭합니다.

    서비스의 고급 설정 대화 상자가 나타납니다.

  2. 사용자 지정 연결 문자열 사용을 선택합니다.

    텍스트 상자에 Data Source = |SQL/CE|의 기본값이 나타납니다.

  3. SQL Server Compact Edition 버전 3.5 데이터베이스를 생성하여 사용하려면 기본 연결 문자열 값을 유지합니다. Visual Studio에서는 데이터베이스 파일을 생성하여 Application.UserAppDataPath 속성에 지정된 디렉터리에 저장합니다.

  4. 암호화된 SQL Server Compact 3.5 데이터베이스를 생성하여 사용하려면 다음 예제와 같이 password 및 encrypt database 값을 연결 문자열에 추가합니다.

    참고

    강력한 암호를 지정해야 하며, 데이터베이스가 생성된 후에는 암호를 변경할 수 없습니다.

    Data Source = |SQL/CE|;password=<password>;encrypt database=true
    
  5. 고유한 SQL Server 데이터베이스를 사용하려면 고유한 연결 문자열을 지정합니다. 유효한 연결 문자열 형식에 대한 자세한 내용은 SQL Server 설명서를 참조하십시오. 이 데이터베이스는 자동으로 생성되지 않습니다. 연결 문자열은 다음 SQL 문을 사용하여 생성할 수 있는 기존 데이터베이스를 참조해야 합니다.

    CREATE TABLE ApplicationProperties (PropertyName nvarchar(256),
        PropertyValue nvarchar(256))
    CREATE TABLE UserProperties (PropertyName nvarchar(256),
        PropertyValue nvarchar(256))
    CREATE TABLE Roles (UserName nvarchar(256), 
        RoleName nvarchar(256))
    CREATE TABLE Settings (PropertyName nvarchar(256), 
        PropertyStoredAs nvarchar(1), PropertyValue nvarchar(2048))
    

사용자 지정 공급자 사용

기본적으로 클라이언트 응용 프로그램 서비스 기능에서는 System.Web.ClientServices.Providers 네임스페이스의 공급자를 사용합니다. 프로젝트 디자이너서비스 페이지를 사용하여 응용 프로그램을 구성하는 경우 이러한 공급자에 대한 참조가 App.config 파일에 추가됩니다. 이러한 기본 공급자는 서버의 해당하는 공급자에 액세스합니다. 웹 서비스는 대개 SqlMembershipProviderSqlRoleProvider 같은 공급자를 통해 사용자 데이터에 액세스하도록 구성됩니다.

사용자 지정 서비스 공급자를 사용하려는 경우에는 대개 공급자가 서버에 액세스하는 모든 클라이언트 응용 프로그램에 영향을 주도록 서버 쪽 공급자를 변경합니다. 하지만 클라이언트 쪽의 기본이 아닌 공급자를 사용할 수도 있습니다. 다음 절차와 같이 사용자 지정 인증 또는 역할 공급자를 프로젝트의 App.config 파일에 지정할 수 있습니다. 사용자 지정 인증 및 역할 공급자를 만드는 방법에 대한 자세한 내용은 멤버 자격 공급자 구현역할 공급자 구현을 참조하십시오. 또한 프로젝트의 Settings 클래스(C#에서는 Properties.Settings.Default, Visual Basic에서는 My.Settings로 각각 액세스)를 수정하여 사용자 지정 설정 공급자를 사용할 수도 있습니다. 자세한 내용은 응용 프로그램 설정 아키텍처를 참조하십시오.

기본값이 아닌 공급자를 사용하도록 클라이언트 응용 프로그램 서비스를 구성하려면

  1. 기본값이 아닌 인증 또는 역할 서비스 공급자를 사용하려면 먼저 서비스 페이지에서 다른 모든 구성 설정을 완료합니다.

  2. 프로젝트 디자이너를 닫습니다. 이렇게 하는 이유는 아무 설정도 수정하지 않더라도 서비스 페이지에서 App.config 파일을 자동으로 업데이트하기 때문입니다. 이 절차에 설명된 대로 App.config 파일을 수동으로 수정한 다음 서비스 페이지로 돌아가면 수정 사항이 다시 설정됩니다.

  3. 솔루션 탐색기에서 App.config를 두 번 클릭합니다.

    텍스트 편집기에 응용 프로그램 구성 파일이 열립니다.

  4. <membership> 또는 <roleManager> 요소 내에서 <providers> 요소를 찾습니다. 이러한 요소는 <system.web> 요소의 자식입니다. <membership> 요소는 인증 공급자를 지정하는 데 사용되고 <roleManager> 요소는 역할 공급자를 지정하는 데 사용됩니다.

  5. <add> 요소를 <providers> 요소의 자식으로 추가합니다. 다음 예제와 같이 name 및 type 특성을 지정해야 합니다. type 특성 값은 어셈블리에 한정된 형식 이름이어야 합니다. 자세한 내용은 Type.AssemblyQualifiedName어셈블리 이름을 참조하십시오.

    <add name="MyCustomRoleProvider" type="MyNamespace.MyRoleProvider, MyAssembly" />
    
  6. <membership> 또는 <roleManager> 요소의 defaultProvider 특성을 수정하여 이전 단계에서 추가한 <add> 요소의 이름 값을 지정합니다.

    <roleManager enabled="true" defaultProvider="MyCustomRoleProvider">
    

참고 항목

작업

방법: 클라이언트 응용 프로그램 서비스에서 사용자 로그인 구현

방법: 클라이언트 응용 프로그램 서비스에서 오프라인으로 작업

연습: 클라이언트 응용 프로그램 서비스 사용

참조

프로젝트 디자이너, 서비스 페이지

서비스의 고급 설정 대화 상자

개념

클라이언트 응용 프로그램 서비스 개요

프로젝트 디자이너 소개

멤버 자격 공급자 구현

역할 공급자 구현

응용 프로그램 설정 아키텍처

기타 리소스

클라이언트 응용 프로그램 서비스

SQL Server용 응용 프로그램 서비스 데이터베이스 만들기 및 구성