从 C# 针对 ADAM 对 ADAM 用户进行身份验证 - 无法绑定

     2023-02-16     85

关键词:

【中文标题】从 C# 针对 ADAM 对 ADAM 用户进行身份验证 - 无法绑定【英文标题】:Authenticating an ADAM user against ADAM from C# - cannot bind 【发布时间】:2009-05-14 15:24:50 【问题描述】:

我已经设置了一个 ADAM 实例并添加了一些测试用户。在 c# 中,我可以使用 Windows 帐户绑定到 ADAM,但无法使用 ADAM 用户之一进行绑定。 (我可以在 ldp 中成功绑定 adam 用户)并且我已通过将 msDS-UserAccountDisabled 属性设置为 false 来确保启用了用户。 当我与我的 Windows 帐户绑定时,我可以成功搜索并带回 ADAM 用户的属性,但我仍在努力对他们进行身份验证,当我尝试与 ADAM 用户帐户绑定时,我收到错误:

错误:System.Runtime.InteropServices.COMException (0x8007052E):登录失败:未知用户名或密码错误。在 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)

这是我正在使用的代码:

string userName = txtUserName.Text;
string password = txtPassword.Text;
string ADConnectionString = "LDAP://localhost:389/CN=sandbox,DC=ITOrg";
DirectoryEntry entry = new DirectoryEntry(ADConnectionString);

entry.Username = "myComputer\\Administrator";
entry.Password = "myPassword";
try 

DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = "(&(objectClass=user)(CN=" + userName + "))";
SearchResultCollection result = searcher.FindAll();
if (result.Count > 0)

    //bind with simple bind
    using (DirectoryEntry de = new DirectoryEntry(result[0].Path, userName, password,AuthenticationTypes.None))
    
         if (de.Guid != null) // this is the line where it dies
         
              Label1.Text = "Successfully authenticated";
              Label2.Text = result[0].Properties["displayName"][0].ToString();
              Label3.Text = result[0].Properties["telephoneNumber"][0].ToString();
           else 
          
             Lable1.Text = "Unable to Authenticate";
          
     

else

    Lable1.Text = "UserName :" + userName + " not found"; 

 catch(Exception ex)

     Label1.Text = "Error searching: " + ex.ToString();

提前感谢您的帮助,非常感谢!

【问题讨论】:

【参考方案1】:

可能是用户名格式问题。在 SDS 中验证 ADAM 用户时,您必须使用 LDAP 简单绑定并使用 ADAM 支持的名称格式。 ADAM 在技术上也允许您使用 Digest auth,但这在 SDS(仅 SDS.Protocols)中不可用,因此不适用于您的代码方法。

您正在使用简单绑定,因为您设置了 AuthenticationTypes.None,因此该部分没问题。那么可能错误的部分是用户名格式。

ADAM 接受用户的完整 DN、他们的 displayName(如果已设置且唯一)和/或 userPrincipalName(如果已设置且唯一)作为“可绑定”用户名,因此请从用户的完整 DN 开始,看看是否可行.如果是这样,您也可以尝试其他用户名值。请注意,您可以在 ADAM 中为 displayName 或 userPrincipalName 放置您想要的任何内容。没有验证。只需确保值是唯一的即可。

如果您真的想针对 ADAM 执行某种类型的绑定身份验证,您将通过使用 .NET 3.5 中 PrincipalContext 的 ValidateCredentials 方法获得更好的性能和扩展性。

此类内容一直在http://www.directoryprogramming.net 的论坛中记录和讨论,并且是我经常光顾的地方,因为它是我的网站。 :) 一位朋友向我介绍了这篇文章,否则我将永远不会看到它。

【讨论】:

欢迎来到 ***,乔!所有 ADAM 和 Active Directory 查询者都将很高兴知道您也在此处关注他们的问题! ;-) 我也有同样的问题。当我从用户的属性中删除 UPN 时,身份验证总是失败。无论如何,在没有 UPN 的情况下进行身份验证吗?

使用 c# 重置 ADAM 用户的密码

】使用c#重置ADAM用户的密码【英文标题】:ADAMuser\'spasswordresetwithc#【发布时间】:2013-08-3006:16:23【问题描述】:我正在尝试在ADAM中重置用户密码。为此,我正在使用Accountmanagement命名空间我尝试了什么:PrincipalContextrootPrincipalCont... 查看详情

针对 ADAM 和 AD FS 的 ASP.NET MVC 3 SSO

】针对ADAM和ADFS的ASP.NETMVC3SSO【英文标题】:ASP.NETMVC3SSOagainstADAMandADFS【发布时间】:2012-02-2519:47:03【问题描述】:我在这个网站上读到一篇关于ADAM,ADFSandSSO的文章不幸的是,我不精通ADAM和ADFS,所以我想知道如果我遵循本文的“... 查看详情

使用 LDAP 对 ADAM 进行身份验证

】使用LDAP对ADAM进行身份验证【英文标题】:AuthenticatingagainstADAMusingLDAP【发布时间】:2013-06-2819:49:23【问题描述】:我正在尝试使用ADAM和LDAP进行身份验证。我真的没有这方面的经验,但我一直在工作中陷入困境以解决这个问题... 查看详情

带有 ADAM 用户和简单绑定的 ADAM 身份验证

】带有ADAM用户和简单绑定的ADAM身份验证【英文标题】:ADAMauthenticationw/ADAMuserandsimplebind【发布时间】:2008-11-1922:27:44【问题描述】:我已遵循Microsoft的ADAM分步指南,并在我的本地计算机上设置了一个ADAM实例。我正在尝试使用“... 查看详情

使用 ADAM 验证 DMZ 区域中的用户

】使用ADAM验证DMZ区域中的用户【英文标题】:UsingADAMtovalidateusersinaDMZzone【发布时间】:2009-04-3013:03:56【问题描述】:ISS和ASP.NET。在我的设置中,我有一个必须可以从以下位置访问的Web应用程序:一个拥有3000名用户的组织200个... 查看详情

浏览 ADAM 并从 C# 检索值

】浏览ADAM并从C#检索值【英文标题】:BrowseADAMandretrievevaluesfromC#【发布时间】:2010-10-0711:32:07【问题描述】:这是我当前的PowerShell代码:connect-QADService-service\'view.domain.com\'-Credential\'MyDomain\\Administrator\'$AllVMs=(get-QADObject-SearchRoo 查看详情

ADAM 负载平衡

【中文标题】ADAM负载平衡【英文标题】:ADAMLoadBalancing【发布时间】:2013-07-1818:41:42【问题描述】:我对负载平衡ADAM实例感兴趣,但不知道从哪里开始。网络上的文档非常稀缺。以前有没有人这样做过,更重要的是可以为我指... 查看详情

使用 ADAM 进行身份验证。如何将 ApacheDS Studio 与 ADAM 连接

】使用ADAM进行身份验证。如何将ApacheDSStudio与ADAM连接【英文标题】:AuthenticationwithADAM.HowtoconnectApacheDSStudiowithADAM【发布时间】:2012-04-2715:56:57【问题描述】:我是AD新手,我刚刚在我的windowsxp中安装了ADAM。然后我创建了一个新... 查看详情

ADAM/AzMan 中的并发更新引发了一个奇怪的错误

...用程序的大量使用相对应。我发现在Web应用程序中,每次用户登录时都会对管理员帐户进行更新。在 查看详情

SharePoint 中的 ADAM 管理

...方工具之一需要AD/ADAM作为身份验证提供程序。我们希望用户管理自己的帐户(例如重置密码、注册新用户等),因此我们需要WebParts来管理AD/ADAM/LDAP数据库中的用户。是否有任何SharePoint 查看详情

adam优化算法

深度学习常常需要大量的时间和计算机资源进行训练,这也是困扰深度学习算法开发的重大原因。虽然我们可以采用分布式并行训练加速模型的学习,但需要的计算资源并没有丝毫减少。而唯有需要资源更少、令模型收敛更快的... 查看详情

无法使用 Windows 域\用户名连接到 ADAM

】无法使用Windows域\\\\用户名连接到ADAM【英文标题】:UnabletoconnecttoADAMwithWindowsdomain\\username无法使用Windows域\\用户名连接到ADAM【发布时间】:2010-02-2219:32:40【问题描述】:我在从我的CommerceServer2007ASP.NET解决方案连接到ADAM实例时... 查看详情

在 C# 中使用 ADSI 进行 LDAP 绑定错误代码

】在C#中使用ADSI进行LDAP绑定错误代码【英文标题】:LDAPbinderrorcodesusingADSIinC#【发布时间】:2010-05-0515:28:41【问题描述】:我正在使用ADSI提供程序从C#客户端绑定到ADAM实例。当绑定失败时,我会返回一个表明失败的通用错误条件... 查看详情

使用 Java 和 LDAP 将用户添加到 AD LDS (ADAM)

】使用Java和LDAP将用户添加到ADLDS(ADAM)【英文标题】:AddingausertoADLDS(ADAM)withJavaandLDAP【发布时间】:2012-03-1615:49:18【问题描述】:EDIT4:让我的应用程序将用户写入活动目录,但是当我尝试启用用户时活动目录会抱怨以前的消息我... 查看详情

pytorchnote20优化算法6adam算法(代码片段)

PytorchNote20优化算法6Adam算法文章目录PytorchNote20优化算法6Adam算法Adam(AdaptiveMomentEstimation)Adam算法代码从0实现pytorch内置优化器全部笔记的汇总贴:PytorchNote快乐星球Adam(AdaptiveMomentEstimation)Adam是一个结合了动量法和RMSProp的优化算... 查看详情

ADAM - 有没有办法“存储”应用程序特定的属性?

...,并且我已经编写了Web服务来完成管理任务,例如添加新用户等。(我有多个应用程序使用同一个ADAM实例)我想要实现的可能听起来有点奇怪-但基本上我希望管理员用户能 查看详情

使用 JXplorer 访问 ADAM 实例

...己的Windows帐户和密码访问它。另一方面,JXplorer使用UserDN进行身份验证。那么我的UserDN应该是什么?提前非常感谢!【问题讨 查看详情

如何防止在 ADAM 中创建重复对象?

...:2009-04-2122:52:19【问题描述】:我正在使用ADAM和DSML服务进行测试。我有两台ADAM服务器,一台是另一台的副本,它们是负载平衡的。如何保护ADAM目录中的重复对象创建?【问题讨论】:【参考方案1】:在创建任何内容之前,请... 查看详情