簡體   English   中英

如何將ASP.NET權限綁定到WCF服務

[英]How to tie ASP.NET permissions to WCF service

我正在創建一個具有WCF服務后端的大型ASP.NET 4網站。 我希望網站使用該服務進行登錄和授權。

基本上,當用戶進入登錄頁面時,我希望使用WCF服務作為身份驗證機制,而不是使用成員資格提供程序。

WCF服務已經使用身份驗證和授權(具有模擬功能),因此,如果服務的客戶端嘗試執行沒有權限的服務方法,則它們會收到錯誤。

問題是如何將其與ASP.NET網站聯系在一起?

這是我正在使用的一些示例代碼:

Web服務界面:

[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/>

如果要使用ASP.NET成員資格,則需要編寫自己的成員資格提供程序以對WCF服務進行身份驗證。 您可能需要向WCF服務中添加操作以返回用戶所屬角色的列表。 然后,您可以使用Membership類來確定用戶是否是特定角色,並根據需要隱藏/顯示UI元素。

有關創建成員資格提供程序的更多信息,請參見http://msdn.microsoft.com/zh-cn/library/f1kyba5e.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM