2011-01-27 5 views
1

WCF 서비스 백엔드가있는 대규모 ASP.NET 4 사이트를 만들고 있습니다. 사이트에서 로그인 및 승인을 위해 서비스를 사용하고 싶습니다.ASP.NET 권한을 WCF 서비스에 연결하는 방법

기본적으로 사용자가 로그인 페이지로 이동하면 멤버 자격 공급자를 사용하는 대신 WCF 서비스를 인증 메커니즘으로 사용하고자합니다.

WCF 서비스는 이미 인증 및 권한 부여 (가장)를 사용하므로 권한이없는 서비스 메서드를 실행하려고하면 서비스 클라이언트에서 오류가 발생합니다.

질문은 ASP.NET 사이트에서 어떻게 연결합니까?

웹 서비스 인터페이스 :

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    bool Foo(); 

    [OperationContract] 
    void Bar(); 
} 

웹 서비스 : 클라이언트에

public class BackEndService : IService 
{ 
    [PrincipalPermission(SecurityAction.Demand, Role="FooRole")] 
    public bool Foo() 
    { 
     return false; 
    } 

    [PrincipalPermission(SecurityAction.Demand, Role="Bar")] 
    public void Bar() 
    { 
     //... 
    } 
} 

:

public class LoginPage : Page 
{ 
    public void LoginButton_Clicked(object sender, EventArgs e) 
    { 
     string username = TxtUsername.Value; 
     string password = TxtPassword.Value; 

     BackEndService client = new BackEndService(); 
     client.CleintCredentials.Username = username; 
     client.ClientCredentials.Password = password; 

     client.Foo(); //if the credentials supplied do not have permissions there will be error 
     client.Bar(); 
    } 
} 

을 여기

은 내가 사용하고 일부 샘플 코드 달성하고자하는 목표 PrincipalPermission 특성으로 플래그가 지정된 UI 요소의 기능 중 일부를 사용하여 사용자가 권한이 없다는 것을 발견하기 위해 서비스로 이동할 필요가 없도록해야합니다.

또한 사용자의 권한에 따라 일부 UI 요소를로드/언로드해야합니다.

사용자가 볼 수있는 UI 모듈을 반환하려면 내 서비스에 일부 논리를 구워야합니까? UI 요소의 코드에서 PrincipalPermissionAttribute를 사용하는 경우처럼 멤버쉽 공급자 인 것처럼 서비스를 통해 사용 권한을 처리 할 수 ​​있습니까?

감사합니다,

<bleepzter/> 

답변

1

당신은 ASP.NET 회원을 사용하려는 경우, 당신은 당신의 WCF 서비스에 대해 인증하는 자신의 멤버 자격 공급자를 작성해야합니다. 사용자가 속한 역할 목록을 반환하려면 WCF 서비스에 작업을 추가해야 할 수 있습니다. 그런 다음 Membership 클래스를 사용하여 사용자가 특정 역할인지 확인하고 필요에 따라 UI 요소를 숨기거나 표시 할 수 있습니다.

멤버 자격 공급자 만들기에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx을 참조하십시오.

+0

나는 그것을 두려워했다. 나는 회원 자격없이 UI를 숨기고 보여주기위한 자신 만의 논리를 시작할 것입니다. – bleepzter

관련 문제