【问题标题】:Validate user credentials from Azure AD using PrincipalContext使用 PrincipalContext 验证来自 Azure AD 的用户凭据
【发布时间】:2018-03-08 14:13:50
【问题描述】:

如何使用 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\\Username”

PrincipalContext 的构造函数应该如何连接到 Azure 并确认用户名和密码?

【问题讨论】:

    标签: .net azure active-directory azure-active-directory principalcontext


    【解决方案1】:

    Azure AD 和 Windows Server AD 不是一回事。他们都旨在以不同的方式解决相同的问题。您正在尝试适用于 Windows Server AD 的 PrincipalContext。

    Windows Server AD 可以同步到 Azure AD,但只有对象信息(如用户、组等)才能在 Azure AD 中使用。但是协议级别的东西,比如 Kerberos,不能通过 Azure AD 获得。

    因此,Azure AD 不是拥有一个可以使用 Kerberos 与 Windows Server AD 对话的受信任的加入域的服务器,而是依赖于 OAuth 和更现代的协议,这些协议可以在 Web 上运行,并且不需要受信任的服务器。无论托管服务器如何,受 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 2013-04-15
      相关资源
      最近更新 更多