我看到我可以創建一個使用NTLM身份驗證的Intranet身份驗證。這幾乎是我需要的。另外我還需要檢查用戶是否在AD中的指定組中。Asp.Net MVC 3:Intranet應用程序與特殊AD組中的用戶?
有沒有簡單的方法來做到這一點?這是一個非常小的Web應用程序(8-10天的開發)。
謝謝
我看到我可以創建一個使用NTLM身份驗證的Intranet身份驗證。這幾乎是我需要的。另外我還需要檢查用戶是否在AD中的指定組中。Asp.Net MVC 3:Intranet應用程序與特殊AD組中的用戶?
有沒有簡單的方法來做到這一點?這是一個非常小的Web應用程序(8-10天的開發)。
謝謝
var ctx = new PrincipalContext(ContextType.Domain);
var userPrincipal = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userName);
var groups = userPrincipal.GetGroups();
在這裏,您哈瓦所有一級組,其當前用戶相關聯。如果你想更深入地檢查,比如第一級組所屬的組,你必須編寫遞歸函數來遍歷整個組圖。使用這三行可以得到指定組的父組。
您可以在每一步中檢查給定組是否爲收集組的一部分,如果是,則中斷並返回true。
您可以使用參數將Authorize屬性添加到有問題的控制器以檢查組。
例如
[Authorize("mydomain/admin")]
public class MyController : Controller
{
}
您將需要啓用網站上的windows身份驗證過。
HTH
硅
我如何使用Asp.Net MVC的驗證系統整合呢? – J4N
您可以將邏輯放入global.asax Session_start事件中。檢查用戶是否已通過身份驗證; HttpContext.Current.User.Identity.IsAuthenticated; 如果是,那麼 UserName = HttpContext.Current.User.Identity.Name.Split('\\')。LastOrDefault() – TigranG
您確定沒有更好的方法可以使用AuthProvider或其他方法嗎? – J4N