방법: 서비스에서 ASP.NET 역할 공급자 사용

ASP.NET 역할 공급자는 ASP.NET 멤버 자격 공급자와 함께 ASP.NET 개발자가 웹 사이트를 만들 수 있는 기능입니다. 이 웹 사이트에서 사용자는 사이트에 계정을 만들고 인증을 위해 역할을 할당받을 수 있습니다. 이 기능을 사용하여 사용자는 사이트에 계정을 설정하고 사이트 및 해당 서비스에 로그인하여 단독으로 액세스할 수 있습니다. 반면, Windows 보안의 경우 사용자에게는 Windows 도메인의 계정이 있어야 합니다. 대신 자신의 자격 증명(사용자 이름/암호 조합)을 제공하는 사용자가 사이트 및 해당 서비스를 사용할 수 있습니다.

샘플 애플리케이션은 멤버 자격 및 역할 공급자를 참조하세요. ASP.NET 멤버 자격 공급자 기능에 대한 자세한 내용은 방법: ASP.NET 멤버 자격 공급자 사용을 참조하세요.

역할 공급자 기능은 SQL Server 데이터베이스를 사용하여 사용자 정보를 저장합니다. WCF(Windows Communication Foundation) 개발자는 보안을 위해 이러한 기능을 활용할 수 있습니다. WCF 애플리케이션에 통합될 때 사용자는 WCF 클라이언트 애플리케이션에 사용자 이름/암호 조합을 제공해야 합니다. WCF에서 데이터베이스를 사용하려면 ServiceAuthorizationBehavior 클래스의 인스턴스를 만들고 해당 PrincipalPermissionMode 속성을 UseAspNetRoles로 설정한 다음 서비스를 호스팅하는 ServiceHost에 대한 동작 컬렉션에 해당 인스턴스를 추가해야 합니다.

역할 공급자 구성

  1. Web.config 파일의 <system.web> 요소 아래에서 <roleManager> 요소를 추가하고 해당 enabled 특성을 true로 설정합니다.

  2. defaultProvider 특성을 SqlRoleProvider으로 설정합니다.

  3. <roleManager> 요소를 <providers> 요소에 대한 자식으로 추가합니다.

  4. 다음 예제처럼 name, type, connectionStringName, applicationName과 같은 적절한 값으로 설정된 특성을 포함하는 <providers> 요소를 <add> 요소에 대한 자식으로 추가합니다.

    <!-- Configure the Sql Role Provider. -->  
    <roleManager enabled ="true"
     defaultProvider ="SqlRoleProvider" >  
       <providers>  
         <add name ="SqlRoleProvider"
           type="System.Web.Security.SqlRoleProvider"
           connectionStringName="SqlConn"
           applicationName="MembershipAndRoleProviderSample"/>  
       </providers>  
    </roleManager>  
    

역할 공급자를 사용하도록 서비스 구성

  1. Web.config 파일에서 <system.serviceModel> 요소를 추가합니다.

  2. <system.ServiceModel> 요소에 <behaviors> 요소를 추가합니다.

  3. <behaviors> 요소에 <serviceBehaviors>를 추가합니다.

  4. <behavior> 요소를 추가하고 name 특성을 적절한 값으로 설정합니다.

  5. <behavior> 요소에 <serviceAuthorization>을 추가합니다.

  6. principalPermissionMode 특성을 UseAspNetRoles으로 설정합니다.

  7. roleProviderName 특성을 SqlRoleProvider으로 설정합니다. 다음 예제에서는 구성의 단편을 보여 줍니다.

    <behaviors>  
     <serviceBehaviors>  
      <behavior name="CalculatorServiceBehavior">  
       <serviceAuthorization principalPermissionMode ="UseAspNetRoles"  
                             roleProviderName ="SqlRoleProvider" />  
      </behavior>  
     </serviceBehaviors>  
    </behaviors>  
    

참고 항목