首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UserPrincipal.FindByIdentity权限

UserPrincipal.FindByIdentity权限
EN

Stack Overflow用户
提问于 2010-08-26 21:16:10
回答 2查看 13.9K关注 0票数 15

我正在尝试使用.NET System.DirectoryServices.AccountManagement库来获取特定Active用户的UserPrincipal。

我有以下代码:

代码语言:javascript
复制
PrincipalContext context = new PrincipalContext(ContextType.Domain, "DomainName");
userPrincipal = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username);

这段代码是作为有效的域用户运行的,但是当我执行它时,我会得到以下异常:

System.DirectoryServices.DirectoryServicesCOMException (0x8007052E):登录失败:用户名未知或密码错误。

有趣的是,我可以使用相同的上下文进行以下调用,而不存在任何问题:

代码语言:javascript
复制
context.ValidateCredentials(username, password, ContextOptions.Negotiate)

想法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-01 19:57:45

您需要使用接受用户名和密码的PrincipalContext构造函数。

验证工作的原因是因为它使用提供的凭据绑定到目录。

票数 13
EN

Stack Overflow用户

发布于 2011-03-02 06:47:44

听起来你有一个存储的网络凭证。在Windows中,可以指定在试图访问网络资源时使用不同的网络凭据。我可以通过设置错误的网络凭据来重现与您所看到的问题完全相同的问题。

假设您的域名为yourdomain.com,您可以告诉Windows在与任何具有足够yourdomain.com的计算机对话时始终使用特定的用户名和密码。

=== Windows 7/2008 ===

启动“Manager".

  • Under 凭据”部分,单击Add a Windows credentials
  1. In网络地址,输入*.yourdomain.com
  2. In用户名和密码,输入错误的用户名或密码

=== Windows /2000/2003 ===

在“control keymgr.dll

  • Click添加”对话框中的“存储用户名和密码”对话框

  • 上单击“开始并运行

  • 类型”,输入*.yourdomain.com

  • In用户名和密码,输入错误的用户名或密码

如果这确实是您面临的问题,那么简单的解决方法就是删除存储的密码。

为什么context.ValidateCredentials(用户名,密码,ContextOptions.Negotiate)能工作?这只是因为您正在初始化另一个Kerberos/NTLM身份验证,因为您再次提供了uernamepassword。在幕后,如果选择Kerberos,它将向域控制器发送提供的用户名和密码,并交换Kerberos TGT票证。然后,您的机器使用这个TGT票据在LDAP服务器上获得一个服务票证。然后,您的机器将将此服务票证发送到LDAP服务器。请注意,此服务票证不会保留在当前登录会话中。

为什么UserPrincipal.FindByIdentity不能工作?如果您没有任何存储的密码,通常情况下,它应该可以工作,因为Windows将只使用当前登录用户TGT票证来交换LDAP服务器服务票证。没有涉及用户名/密码验证过程。但是,如果您有一个错误的用户名密码,Windows会认为它不应该使用当前登录用户TGT票证。相反,它应该使用存储的网络密码获得一个新的TGT票据。这就是你看到System.DirectoryServices.DirectoryServicesCOMException (0x8007052E): Logon failure: unknown user name or bad password.的原因

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3579588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档