[英]Mapping User.Identity in .NET MVC app to active directory user
我正在編寫一個內部網上的.NET MVC 5應用程序,使用Windows身份驗證,需要查詢Active Directory以查看可用的組,然后檢查用戶是否在該角色中。
組和用戶名的來源將是活動目錄。 然后,我需要使用.NET Identity檢查身份和成員身份。 我不確定哪些字段映射到什么。
AD中感興趣的領域似乎是:
所以,我認為SamAccountName == User.Identity.Name ,但文檔說SamAccountName適用於早期的操作系統。 這是否有效意味着這已被棄用,我應該使用別的東西?
我的關於CN和objectGUID的斷言是否正確?
第一步:設置參數以使用AD:
在web.config文件的部分中,設置以下內容:
<authentication mode="Windows" />
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
<providers>
<clear />
<add
name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider"
applicationName="/" />
</providers>
</roleManager>
現在,您將能夠直接使用System.Web.Security命名空間中的方法。
如果要將對View的訪問權限僅限於AD的“groupName”組的成員:
你只需要像這樣裝飾你的控制器動作:
[Authorize(Roles = @"DOMAIN\groupName")]
Public ActionResult Index()
{...}
如果您想根據AD用戶群進行治療:
在治療中使用“IsInRole(rolename)”等方法:
if (User.IsInRole("DOMAIN\\groupName"))
{
// Do what you want
}
編輯:有問題的實現:在這里,您應該在創建任務時保存受影響的組的sAMAccountName。 然后,當用戶想要將任務標記為完成時,只需檢查:
if (User.IsInRole("DOMAIN\\" + sAMAccountNameOfTheGroupDedicatedToYourTask))
{
// Mark as complete
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.