2012-08-14 116 views
0

我已經有一個在Windows Azure Cloud上運行的Asp.net mvc4項目。但到目前爲止,它沒有任何用戶管理的事情。任何人都可以登錄(我有一個Windows Live單點登錄)。 但現在我需要做最簡單的基於角色的認證。Windows Azure基於角色的身份驗證(ACS)

1.我想註冊用戶角色(管理員,用戶,內容管理員)/它可以手動完成。 2.我需要在登錄時根據角色對用戶進行身份驗證。

任何人可以給我一個提示,或鏈接到一個明確的教程或建議我任何想法?

回答

0

正如你可能已經注意到ACS負責認證而不是授權,你需要自己處理。

最簡單的事情就是每次新用戶連接時在應用程序中創建一個「配置文件」。爲特定用戶創建配置文件時,您需要將身份提供者以及該用戶的名稱與配置文件一起存儲。存儲此信息將允許您在下次連接時爲該用戶提取配置文件(您將從索賠中獲得此信息,但這取決於您如何配置ACS)。

對於一個完整的工作示例,您應該查看BlobShare應用程序(使用身份驗證和授權)的來源。

3

最簡單的是在ACS發佈的令牌中添加「角色」聲明。既然你說你現在可以手動完成這個工作,那麼你可以使用ACS門戶來創建這些規則。

在您的應用程序,你會做平常的事情,像裝飾用的「授權」屬性,包括角色的行動:只要你使用「角色」聲明類型,一切正常

[Authorize(Roles="Administrator")] 
public ActionResult Index() 
{ 
    var b = User.IsInRole("Manager"); 
... 
} 

。 (這也可以自定義,但是這種方式可以用於這種方式)。

您將遇到的唯一挑戰是歸因於LiveID。 LiveID只提供一個唯一的標識符。您需要一種將該標識符與知名用戶(例如電子郵件或名稱)映射的方式。這通常需要兩個步驟。您首先進行身份驗證並獲取唯一身份證,然後向用戶詢問信息並進行驗證(例如,通過發送電子郵件)。

使用任何其他身份提供商,您沒有這個問題,因爲他們都給你一個電子郵件和一個名字。

編寫上述規則是一樣容易:

如果你有更多的用戶或者更多的規則,那麼門戶通常不再實用,你還需要其他的東西(比如在你的應用中使用API​​,使用腳本,使用工具像auth10等)

0

ACS以外的選項是memebership服務。

Introduction to Membership

憑會員服務,您有身份驗證和授權。成員身份具有角色,您甚至可以使用web.config中的角色。

ACS是不錯的選擇。我只是提出另一種選擇。

1

我爲我的項目解決這個問題的方法是添加一個ClaimsAuthenticationManager並將用戶角色添加到該標識中。

namespace Claims 
{ 
  public class RoleClaimsAuthenticationManager : ClaimsAuthenticationManager 

    public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal) 
    { 
        if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated) 
        { 
            var identity = (ClaimsIdentity)incomingPrincipal.Identity; 
            var roles = getRolesForIdentity(identity); //Get the roles for your identity here 
            foreach (var r in roles) 
            { 
                 identity.AddClaim(new Claim(ClaimTypes.Role, r.Name)); 
            } 
        } 

        return base.Authenticate(resourceName, incomingPrincipal); 
    } 
} 

我然後把它掛在配置在system.identityModel -> identityConfiguration

<claimsAuthenticationManager type="Claims.RoleClaimsAuthenticationManager, Claims" /> 
相關問題