다음을 통해 공유


방법: WCF 인증 서비스에 기본이 아닌 멤버 자격 공급자 사용

업데이트: 2007년 11월

이 항목에서는 WCF(Windows Communication Foundation)를 사용하여 ASP.NET 인증 서비스를 호출할 때 멤버 자격 공급자를 프로그래밍 방식으로 선택하는 방법을 보여 줍니다. 런타임에 얻는 정보를 기반으로 서로 다른 멤버 자격 공급자를 사용하여 사용자를 인증해야 할 때 기본이 아닌 멤버 자격 공급자를 사용할 수 있습니다. 기본이 아닌 멤버 자격 공급자를 통해 인증하려면 Authenticating 이벤트에 대한 이벤트 처리기를 만드십시오.

SOAP 1.1 메시지를 보내고 사용할 수 있는 Java 응용 프로그램과 같은 클라이언트 응용 프로그램의 사용자는 인증 서비스로 WCF를 사용하여 로그온합니다. 클라이언트 응용 프로그램과 ASP.NET 웹 응용 프로그램은 동일한 사용자 자격 인증을 사용하여 사용자를 인증할 수 있습니다.

기본이 아닌 멤버 자격 공급자를 사용하여 인증하려면

  1. 사용할 멤버 자격 공급자를 만들고 구성합니다.

    자세한 내용은 멤버 자격 공급자 구현멤버 자격을 사용하도록 ASP.NET 응용 프로그램 구성을 참조하십시오.

  2. Global.asax 파일에서 Authenticating 이벤트에 대한 이벤트 처리기를 만들고 사용자 지정 멤버 자격 공급자를 호출하여 사용자 자격 증명을 인증하는 코드를 추가합니다.

    다음 예제에서는 ContosoSqlProvider 공급자, FabrikamSqlProvider 공급자 또는 기본 멤버 자격 공급자를 사용하여 자격 증명을 인증하는 Authenticating 이벤트에 대한 처리기를 보여 줍니다. 사용자 자격 증명은 사용자 형식에 따라 다른 데이터베이스에 저장됩니다. 이벤트 처리기는 사용자 이름으로 제공된 전자 메일 주소에 따라 사용할 공급자를 결정합니다.

    Sub AuthenticationService_Authenticating _
       (ByVal sender As Object, _
        ByVal e As System.Web.ApplicationServices.AuthenticatingEventArgs)
    
        If (e.Username.IndexOf("@contoso.com") >= 0) Then
            e.Authenticated = Membership.Providers("ContosoSqlProvider").ValidateUser(e.Username, e.Password)
        ElseIf (e.Username.IndexOf("@fabrikam.com") >= 0) Then
            e.Authenticated = Membership.Providers("FabrikamSqlProvider").ValidateUser(e.Username, e.Password)
        Else
            e.Authenticated = Membership.Provider.ValidateUser(e.Username, e.Password)
        End If
        e.AuthenticationIsComplete = True
    End Sub
    
    void AuthenticationService_Authenticating(object sender, System.Web.ApplicationServices.AuthenticatingEventArgs e)
    {
        if (e.UserName.IndexOf("@contoso.com") >= 0)
        {
            e.Authenticated = Membership.Providers["ContosoSqlProvider"].ValidateUser(e.UserName, e.Password);
        }
        else if (e.UserName.IndexOf("@fabrikam.com") >= 0)
        {
            e.Authenticated = Membership.Providers["FabrikamSqlProvider"].ValidateUser(e.UserName, e.Password);
        }
        else
        {
            e.Authenticated = Membership.Provider.ValidateUser(e.UserName, e.Password);
        }
        e.AuthenticationIsComplete = true;
    }
    
  3. Global.asax 파일의 Application_Start 메서드에서 Authenticating 이벤트에 이벤트 처리기를 바인딩합니다.

    다음 예제에서는 Authenticating 이벤트에 처리기를 바인딩하는 방법을 보여 줍니다.

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        AddHandler System.Web.ApplicationServices.AuthenticationService.Authenticating, _
          AddressOf Me.AuthenticationService_Authenticating
    End Sub
    
    void Application_Start(object sender, EventArgs e)
    {
        System.Web.ApplicationServices.AuthenticationService.Authenticating +=
            new EventHandler<System.Web.ApplicationServices.AuthenticatingEventArgs>(AuthenticationService_Authenticating);
    }
    
  4. SOAP 1.1 메시지를 읽고 사용할 수 있는 응용 프로그램에서 인증 서비스를 호출합니다.

코드 컴파일

앞의 예제가 작동하려면 웹 서버에 인증 서비스를 설정해야 합니다. 자세한 내용은 방법: WCF 인증 서비스 활성화를 참조하십시오.

보안

항상 SSL(Secure Sockets Layer) 및 HTTPS 프로토콜을 사용하여 인증 서비스에 액세스합니다.

참고 항목

개념

Windows Communication Foundation 인증 서비스 개요

참조

AuthenticationService

AuthenticatingEventArgs

기타 리소스

멤버 자격을 사용하여 사용자 관리