【问题标题】:Authenticating to AD using sAMAccountName format using PrincipleContext使用 PrincipleContext 使用 sAMAccountName 格式对 AD 进行身份验证
【发布时间】:2014-10-14 17:01:45
【问题描述】:

我正在为离线应用程序实施 AD 身份验证。

我的原始代码执行以下操作:

var validAuth = false;
using (var context = new System.DirectoryServices.AccountManagement.PrincipalContext(System.DirectoryServices.AccountManagement.ContextType.Domain))
{
    validAuth = context.ValidateCredentials(_viewModel.Username, txtPassword.Password);
}

但是,在测试期间,我们注意到这导致帐户锁定的次数是 AD 组策略尝试次数的一半 - 因此,如果策略设置为在锁定前 4 次尝试,用户将被锁定在 2 次。

我在谷歌上搜索并找到了这篇文章 on MSDN 和 TL;DR 是这样的:

听起来如果使用UPN格式(Domain@sAMAccountName),错误密码计数会增加2,但是如果使用sAMAccountName格式(Domain\sAMAccountName),则每次计数都会增加1。

鉴于此,我将代码更改为:

var validAuth = false;
using (var context = new System.DirectoryServices.AccountManagement.PrincipalContext(System.DirectoryServices.AccountManagement.ContextType.Domain))
{
    var usernameToAuth = string.Format("{0}\\{1}", Environment.UserDomainName, _viewModel.Username);
    validAuth = context.ValidateCredentials(usernameToAuth, txtPassword.Password);
}

但是无论输入如何,现在都无法进行身份验证。如果我将其更改为使用 user@domain 的旧式 UPN 格式,它可以很好地进行身份验证 - 但显然这会用完两个身份验证请求。

MSDN 帖子说使用 sAMAccountName 格式作为解决方法,但我正在努力解决如何做到这一点。我的原始代码也没有明确使用旧的 UPN 格式 - 我只是将用户名直接传递给 ValidateCredentials 方法(在任何地方都看不到 @ 符号)所以这个方法首先使用旧的 UPN 方法吗?

请提供任何建议 - 我并不特别希望我们的用户可能有一半的错误登录尝试。

【问题讨论】:

    标签: c# .net authentication active-directory windows-authentication


    【解决方案1】:

    我在PrincipalContext构造函数中使用了域规范,在这个post中指定,像这样:

        public static bool IsAuthenticated(string username_, string password_)
        {
            using (var pc = new PrincipalContext(ContextType.Domain, DomainManager.DomainName))
                return pc.ValidateCredentials(username_, password_);
        }
    

    就我而言,我使用System.DirectoryServices.ActiveDirectory.DomainSystem.DirectoryServices.ActiveDirectory.DomainController 来获取DomainManager.DomainName 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 2017-04-08
      相关资源
      最近更新 更多