使用备用UPN后缀对AD用户进行身份验证

维克拉姆

这个问题可能间接地这里链接的问题相匹配

我正在开发基于Asp.Net 4.0的网站项目供企业使用。

网站上有一个表格,要求用户提供其AD用户名和密码以及默认情况下选择的域名。

我知道通过根域名对用户进行身份验证的方法。但是有些用户的域名(UPN后缀)已被修改。

例如,域名是xyz.com因此,用户通过[email protected]及其密码进行身份验证但是对于某些用户,其名称为[email protected]

那么,如何用根域名以外的替代UPN后缀来验证此类用户呢?

维克拉姆

经过大量的搜索和试用方法搜索后,我有理由提出了解决方案。

以下Jorge de Almeida Pinto撰写的AD中用户主体名称链接请从此处获取有关iUPN和eUPN的详细信息。

我将再次说明我的问题陈述,以使其更加清晰。

设想

  1. 域(domain.com中AD中只有两个用户名为AnilAlex
  2. iUPN for Anil是[email protected],而Alex的iUPN[email protected](默认情况下由广告本身设置)。
  3. eUPN for Anil留为空白(这意味着它将是[email protected],这是AD的默认行为)但是出于任何原因,对于Alex来说,它都被设置为[email protected]

您可以从链接Active Directory With C#中获得有关AD交互的想法,我发现它写得很好。

作为一名程序员,我想编写代码以使这两个用户都从代码登录到AD。

问题

原因

我还没有找到完美的根本原因。

但是我的猜测是,AD本身将域名放在@之后(按速率)由于Alex的域名为dummy.com,因此AD尝试找到后缀为@ dummy.com的用户。并返回结果,因为找不到用户。

解决方案

  1. 解决方案是剖析用户名和域名。
  2. 根域名(domain.com)作为后缀添加到用户(具有单独的域名)。然后尝试登录。

您可能会遇到其他未经授权的用户也可以通过这种方式进入的问题。不!因为密码需要匹配。

为什么行得通?

因为AD能够在domain.com中找到使用[email protected]用户

编辑

我提供的解决方案仅在其他用户具有相同域名的相同sAMAccountName的情况下有效。

但是,如果sAMAccountName本身设置为[email protected],该怎么办因此,真正的解决方案是-

(1)根据UPN获取sAMAccountName。

/// <summary>
    /// Get sAMAccountName for matching UserPrincipalName (UPN)
    /// </summary>
    /// <param name="domain">Domain name</param>
    /// <param name="userName">Username</param>
    /// <returns></returns>
    protected string GetSamUsername(string domain, string userName)
    {
        string samName;
        using (var pc = new PrincipalContext(ContextType.Domain, domain))
        {
            var user = UserPrincipal.FindByIdentity(pc, userName); // Search for this user
            if (user == null) return null; // If user is not there, why go forward

            samName = user.SamAccountName;
        }
        return samName;
    }

(2)现在任何用户均可登录。

它还可以帮助我们验证AD中用户的身份。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用UPN(用户主体名称)与Azure AD进行身份验证

来自分类Dev

使用 Bcrypt 进行用户身份验证

来自分类Dev

使用Azure AD对内部和外部用户进行身份验证

来自分类Dev

使用 Graph API 对 Azure AD B2C 上的用户进行身份验证

来自分类Dev

使用 AWS Cognito + Azure AD + Facebook 对用户进行身份验证

来自分类Dev

Azure Active Directory:使用OpenID Connect身份验证获取用户的UPN

来自分类Dev

使用Azure AD用户建立代理身份验证

来自分类Dev

使用Azure AD身份验证进行声明增强

来自分类Dev

使用带有节点的Azure AD进行身份验证

来自分类Dev

使用SearchGuard对ldap用户进行身份验证以进行Elasticsearch

来自分类Dev

如何使用Google用户名进行身份验证。点亮Firebase身份验证

来自分类Dev

使用Razor MVC + Mysql进行用户身份验证

来自分类Dev

使用socket.io进行用户身份验证

来自分类Dev

使用Go和AngularJS进行用户身份验证

来自分类Dev

Django使用登录的Windows域用户进行身份验证

来自分类Dev

使用LDAP InMemoryDirectoryServer通过Scala对用户进行身份验证

来自分类Dev

使用Crossbar / Autobahn进行用户通知的身份验证?

来自分类Dev

仅使用用户名进行身份验证

来自分类Dev

使用用户帐户进行云运行身份验证

来自分类Dev

使用我自己的函数/ API对用户进行身份验证?

来自分类Dev

使用本地unix用户进行HTTPS身份验证

来自分类Dev

如何使用 firebase sdk 对用户进行身份验证

来自分类Dev

使用 ubuntu 用户进行 Apache WebDAV 身份验证?

来自分类Dev

如何使用 ChatSDK 对 Firebase 用户进行身份验证?

来自分类Dev

使用 ldap 进行身份验证,无需用户密码

来自分类Dev

登录时对用户进行身份验证

来自分类Dev

LoginController 未对用户进行身份验证

来自分类Dev

如何针对ldap / MS AD对Redhat用户进行身份验证

来自分类Dev

如何在Java中根据AD对用户进行身份验证

Related 相关文章

  1. 1

    使用UPN(用户主体名称)与Azure AD进行身份验证

  2. 2

    使用 Bcrypt 进行用户身份验证

  3. 3

    使用Azure AD对内部和外部用户进行身份验证

  4. 4

    使用 Graph API 对 Azure AD B2C 上的用户进行身份验证

  5. 5

    使用 AWS Cognito + Azure AD + Facebook 对用户进行身份验证

  6. 6

    Azure Active Directory:使用OpenID Connect身份验证获取用户的UPN

  7. 7

    使用Azure AD用户建立代理身份验证

  8. 8

    使用Azure AD身份验证进行声明增强

  9. 9

    使用带有节点的Azure AD进行身份验证

  10. 10

    使用SearchGuard对ldap用户进行身份验证以进行Elasticsearch

  11. 11

    如何使用Google用户名进行身份验证。点亮Firebase身份验证

  12. 12

    使用Razor MVC + Mysql进行用户身份验证

  13. 13

    使用socket.io进行用户身份验证

  14. 14

    使用Go和AngularJS进行用户身份验证

  15. 15

    Django使用登录的Windows域用户进行身份验证

  16. 16

    使用LDAP InMemoryDirectoryServer通过Scala对用户进行身份验证

  17. 17

    使用Crossbar / Autobahn进行用户通知的身份验证?

  18. 18

    仅使用用户名进行身份验证

  19. 19

    使用用户帐户进行云运行身份验证

  20. 20

    使用我自己的函数/ API对用户进行身份验证?

  21. 21

    使用本地unix用户进行HTTPS身份验证

  22. 22

    如何使用 firebase sdk 对用户进行身份验证

  23. 23

    使用 ubuntu 用户进行 Apache WebDAV 身份验证?

  24. 24

    如何使用 ChatSDK 对 Firebase 用户进行身份验证?

  25. 25

    使用 ldap 进行身份验证,无需用户密码

  26. 26

    登录时对用户进行身份验证

  27. 27

    LoginController 未对用户进行身份验证

  28. 28

    如何针对ldap / MS AD对Redhat用户进行身份验证

  29. 29

    如何在Java中根据AD对用户进行身份验证

热门标签

归档