DirectoryServicesCOMException.ExtendedErrorMessage - 数据代码列表

DirectoryServicesCOMException.ExtendedErrorMessage - List of Data Codes

我正在构建一个让用户使用他们的 Active Directory 帐户登录的网站,我想通知用户他们登录失败的原因。

背景

登录通常会因错误 Username/Password 而失败,但也可能会因密码过期或帐户被锁定而失败。

我正在使用 this code 执行登录:

public myCustomUserClass Login(string domainName, string username, string password)
{
    string domainAndUsername = domainName + @"\" + username;
    DirectoryEntry entry = new DirectoryEntry(this._ldapPath, domainAndUsername, password);
    myCustomUserClass user = new myCustomUserClass();

    //Bind to the native AdsObject to force authentication.
    try
    {
        object obj = entry.NativeObject;
        // ...
        return user;
    }
    catch (DirectoryServicesCOMException ex)
    {
        // why did the login fail?
    }
    catch (Exception ex)
    {
        // something else went wrong
    }
}

当我收到 DirectoryServicesCOMException 时,我可以在 .ExtendedErrorMessage 属性 中访问有关失败登录尝试的更多信息。到目前为止我看到的两个值是:

锁定:

8009030C: LdapErr: DSID-0C0904DC, comment: AcceptSecurityContext error, data 775, v1db1

错误的用户名:

8009030C: LdapErr: DSID-0C0904DC, comment: AcceptSecurityContext error, data 52e, v1db1

你可以看到 data "attribute" 似乎是独一无二的。我可以编写提取它的代码,然后基于此编写一个开关。

问题

是否有这些代码的列表,我可以用它来确保我涵盖了所有内容?

在搜索有关 DirectoryServicesCOMException.ExtendedErrorMessage 的 Microsoft 资源一天后,我在这里发现了一个措辞不同的问题:

: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 773, v1db1 ]

它引用了一个包含多个此类代码的网站:

http://www-01.ibm.com/support/docview.wss?uid=swg21290631

下面是错误代码列表:

525 - user not found
52e - invalid credentials
530 - not permitted to logon at this time
531 - not permitted to logon at this workstation
532 - password expired
533 - account disabled
534 - The user has not been granted the requested logon type at this machine
701 - account expired
773 - user must reset password
775 - user account locked