3

如何使用 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 并确认用户名和密码?

4

1 回答 1

2

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(以及可选的秘密,稍后您将需要它),它在 Azure AD 中唯一标识您的应用程序 - 添加 ADAL NuGet打包到您的应用程序 - 让 ADAL 将用户重定向到 Azure AD 以登录 - 登录后使用令牌并将用户登录到您的应用程序

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

于 2018-03-09T07:56:44.957 回答