【问题标题】:AD LDS ValidateCredentials at ContextType.ApplicationDirectory can't authenticateContextType.ApplicationDirectory 的 AD LDS ValidateCredentials 无法进行身份验证
【发布时间】:2011-09-30 16:38:34
【问题描述】:

我正在尝试在我的 MVC 应用程序中使用 AD LDS 进行用户身份验证。我设法编写了一些代码,允许我创建/编辑/删除用户和组,但我似乎无法对它们进行身份验证。这是我的示例代码:

using( var context = new PrincipalContext(ContextType.ApplicationDirectory, "Lenovo_T61-LapT",
                                    "CN=Kontrahenci,DC=TestApp,DC=local"))
{
    var userName = "avg.joe";
    var email = "avg.joe@smwhr.us";
    var password = "123456";
    var user = new UserPrincipal(context)
    {
        Name = userName,
        EmailAddress = email
    };
    user.SetPassword(password);
    user.Save();
    if (context.ValidateCredentials(userName , password, ContextOptions.SimpleBind))
        Console.WriteLine("Hooray!");

    user.Dispose();
}

不幸的是,这永远不会到达“Writeline”,只给出密码或用户名不正确的错误。

我玩过 ContextOptions 但没有任何运气。

有什么想法吗?

【问题讨论】:

    标签: .net active-directory directoryservices adam lds


    【解决方案1】:

    所以我找到了我在类似的question 上发布的解决方案。

    我所做的并且对我有用的是,在调用 ValidateCredentials 时,我稍微修改了用户名:

    bool auth = context.ValidateCredentials(
                                String.Format("CN={0},CN=Kontrahenci,DC=TestApp,DC=loc",
                                              userName), 
                                password);
    

    希望这会有所帮助。

    【讨论】:

    • 如上面的答案所示 - 使用 DistinguishedName 作为 userName 参数而不是 sAMAccountName 为我解决了这个问题。但我想补充一点,我不必将 ContextOptions 设置为 SimpleBind。
    猜你喜欢
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2016-01-11
    • 2014-08-09
    相关资源
    最近更新 更多