代码之家  ›  专栏  ›  技术社区  ›  Milos Kalicanin

使用PrincipalContext验证Azure AD中的用户凭据

  •  3
  • Milos Kalicanin  · 技术社区  · 7 年前

    如何使用PrincipalContext验证用户名和密码对于Azure AD帐户是否有效? 我尝试过:

    try
    {
        using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "mycompany.com", username, password))
        {
            if (context.ValidateCredentials(username, password))
            {
                return true;
            }
        }
    }
    catch (Exception)
    {
    }
    return false;
    

    但我得到了一个错误:“LDAP服务器不可用。”

    用户名格式为:“AzureAD \\用户名”

    PrincipalContext的构造函数应该是什么样子的,这样我才能连接到Azure并确认用户名和密码?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Mohit_Garg    7 年前

    Azure广告和Windows Server广告不是一回事。它们都旨在解决相同的问题,但方式不同。您正在尝试PrincipalContext,它用于Windows Server AD。

    Windows Server AD可以同步到Azure AD,但只能同步对象信息,如用户、组等,以便信息在Azure AD中可用。但协议级别的内容(如Kerberos)无法通过Azure AD获得。

    因此,Azure AD依赖于OAuth和更现代的协议,这些协议可以在web上工作,而不需要可信服务器,而不是有一个可以使用Kerberos与Windows server AD进行通信的可信域加入服务器。受OAuth保护的web应用程序或移动应用程序可以在任何托管服务器上运行。

    可以使用ADAL库进行身份验证。您可以在Azure GitHub示例中找到以下示例:

    这些步骤的目的是-将应用程序注册添加到Azure AD-这将为您提供一个客户端ID(以及您稍后需要的可选机密),该ID在Azure AD中唯一标识您的应用程序-将ADAL NuGet包添加到您的应用程序-让ADAL将用户重定向到Azure AD以登录-在登录后使用令牌并将用户登录到您的应用程序

    您可以在此处找到完整的示例: https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect

    推荐文章