我們允許我們的用戶使用NT帳戶名稱(域\帳戶)或UPN(帳戶@電子郵件,xxx)輸入Active Directory帳戶信息。我想寫一些代碼來驗證活動目錄中的帳戶,然後允許用戶繼續前進。請注意,我們不驗證密碼,只是帳戶名稱。驗證UPN和NT登錄名最簡單的方法是什麼?
我可以使用UserPrincipal.FindByIdentity
,但是,這隻需要一個用戶名。
我可以使用.NET驗證任何格式的帳戶名嗎?或者我退居到從帳戶名解析出域以驗證用戶輸入的兩個部分?後面會有點混亂,不是嗎?
我們允許我們的用戶使用NT帳戶名稱(域\帳戶)或UPN(帳戶@電子郵件,xxx)輸入Active Directory帳戶信息。我想寫一些代碼來驗證活動目錄中的帳戶,然後允許用戶繼續前進。請注意,我們不驗證密碼,只是帳戶名稱。驗證UPN和NT登錄名最簡單的方法是什麼?
我可以使用UserPrincipal.FindByIdentity
,但是,這隻需要一個用戶名。
我可以使用.NET驗證任何格式的帳戶名嗎?或者我退居到從帳戶名解析出域以驗證用戶輸入的兩個部分?後面會有點混亂,不是嗎?
嘗試創建從一個UPN WindowsIdentity:
WindowsIdentity wi = new WindowsIdentity("[email protected]");
它將爲一個UPN在AD有效的成功,拋出無效者例外。驗證UPN的過程必須連接到AD並具有適當的訪問權限(即由於模擬上下文的委託限制而不允許匿名化)。
查看System.DirectoryServices.AccountManagement命名空間,尤其是PrincipalSearcher。 我想你可以使用使用Query by Example良好形成QueryFilter做一個快速FindOne和檢查或者帳戶名和UPN。
感謝..什麼驗證NT格式不解析? – 2010-07-12 21:44:37
相同。 WindowsIdentity接受所有有效的格式。 – 2010-07-12 22:10:32