验证UPN和NT登录名的最简单方法是什么?

时间:2010-07-12 21:18:51

标签: c# .net active-directory

我们允许用户使用NT帐户名(域\帐户)或UPN(帐户@ email,xxx)输入Active Directory帐户信息。在允许用户继续之前,我想编写一些代码来验证活动目录中的帐户。请注意,我们不验证密码,只验证帐户名称。

我可以使用UserPrincipal.FindByIdentity,但是,这只需要一个用户名。

我可以使用.NET以任一格式验证帐户名吗?或者我是否会从帐户名称解析出域以验证用户输入的两个部分?后者会有点乱,不是吗?

2 个答案:

答案 0 :(得分:2)

尝试从UPN创建WindowsIdentity

WindowsIdentity wi = new WindowsIdentity("alias@example.com");

在AD中有效的UPN会成功,为无效的UPN抛出异常。验证UPN的过程必须连接到AD并具有适当的访问权限(即,由于模拟上下文的委托约束,不会进行任何无限制)。

答案 1 :(得分:1)

查看System.DirectoryServices.AccountManagement命名空间,尤其是PrincipalSearcher。   我认为您可以使用Query by Example使用格式正确的QueryFilter快速查找FindOne,并检查帐户名或UPN。