2012-09-12 31 views
0

我看到我可以創建一個使用NTLM身份驗證的Intranet身份驗證。這幾乎是我需要的。另外我還需要檢查用戶是否在AD中的指定組中。Asp.Net MVC 3:Intranet應用程序與特殊AD組中的用戶?

有沒有簡單的方法來做到這一點?這是一個非常小的Web應用程序(8-10天的開發)。

謝謝

回答

1
var ctx = new PrincipalContext(ContextType.Domain); 

var userPrincipal = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userName); 

var groups = userPrincipal.GetGroups(); 

在這裏,您哈瓦所有一級組,其當前用戶相關聯。如果你想更深入地檢查,比如第一級組所屬的組,你必須編寫遞歸函數來遍歷整個組圖。使用這三行可以得到指定組的父組。

您可以在每一步中檢查給定組是否爲收集組的一部分,如果是,則中斷並返回true。

+0

我如何使用Asp.Net MVC的驗證系統整合呢? – J4N

+0

您可以將邏輯放入global.asax Session_start事件中。檢查用戶是否已通過身份驗證; HttpContext.Current.User.Identity.IsAuthenticated; 如果是,那麼 UserName = HttpContext.Current.User.Identity.Name.Split('\\')。LastOrDefault() – TigranG

+0

您確定沒有更好的方法可以使用AuthProvider或其他方法嗎? – J4N

1

您可以使用參數將Authorize屬性添加到有問題的控制器以檢查組。

例如

[Authorize("mydomain/admin")] 
public class MyController : Controller 
{ 

} 

您將需要啓用網站上的windows身份驗證過。

HTH

相關問題