簡體   English   中英

ASP.NET MVC 4:身份驗證和授權:Intranet應用程序

[英]ASP.NET MVC 4 : Authentication and Authorization:Intranet Application

我是ASP.NET MVC世界的新手。 我正在構建一個Intranet Web應用程序。 在我的情況下,身份驗證和授權定義如下:

身份驗證:如果HttpRequest包含帶有“ USER_ID”的標頭,則表明用戶已通過身份驗證。 授權:內部有一個WCF服務,該服務返回用戶有權使用USER_ID作為輸入的角色列表。 我將應用程序所需的角色保留在xml文件中。 如果用戶的必需角色是svc響應,則允許她使用該應用程序。

我正在考慮如下實施:

在Global.asax-> Application_AuthenticateRequest中,我將放置代碼以檢查http標頭。 如果其為非空白,我將讓用戶經歷此階段。

在AuthorizeAttribute類的OnAuthorization方法中,我將代碼放入角色列表,並將其與xml文件中所需的角色進行匹配。

有什么方法可以使用現有的身份驗證,授權基礎結構?

我看到這樣的代碼

[Authorize(Roles = "admin")]
public string Index() {
return "only admins!";
}

如何將上述Roles屬性鏈接到某些Xml或Table而不是硬編碼?

請幫助我在asp.net mvc應用程序中實現此邏輯。

您應該檢查Windows Identity Foundation(WIF),尤其是ClaimsAuthorizationManager和ClaimsPrincipalPermissionAttribute。 后者允許您指定需要保護哪些操作和資源,而在ClaimsAuthorizationManager中,您可以檢查當前用戶是否可以對資源執行該操作,並且可以從所需的任何源中讀取該操作。

對於授權,我可以:

  • 在具有適當角色的global.asax AuthorizeRequest事件處理程序中創建GenericPrincipal,並將其分配給HttpContext.User和Thread.CurrentPrincipal。

  • 或者(更好),編寫一個自定義RoleProvider,以從xml文件獲取用戶角色。 如果配置了這樣的RoleProvider,則ASP.NET將為HttpContext.User和Thread.CurrentPrincipal分配一個合適的RolePrincipal。

然后,您可以使用標准的AuthorizeAttribute

暫無
暫無

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

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