如何使用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并确认用户名和密码?
答案 0 :(得分:0)
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添加应用程序注册 - 这将为您提供在Azure AD中唯一标识应用程序的客户端ID(以及可选的秘密,稍后您将需要) - 添加ADAL NuGet包到您的应用程序 - 让ADAL将用户重定向到Azure AD以登录 - 登录后使用令牌并将用户登录到您的应用程序
您可以在此处找到完整的示例:https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect