我们正在利用Azure Graph API并能够获取要返回的属性,但是无法使用标准.Net库验证用户的密码,该库以与本地Active Directory相同的方式对密码进行哈希处理。可以验证用户的Azure Active Directory密码吗?
答案 0 :(得分:0)
最简单的答案是否。
理想情况下,您的应用程序代码不应首先使用户密码可用,因为这违反了安全性最佳实践,因此不建议/不建议这样做。仅应通过不同的受支持的OAuth 2.0授予流将用户凭据直接提供给Azure AD终结点,并且应用程序应使用Azure AD返回的令牌/身份验证代码。
使用ADAL库(以及Azure AD终结点),您将找不到仅用于验证用户凭据的特定内容,而仅是获取令牌的方法。
解决方法-ROPC-资源所有者密码凭证授予(不建议,多次发行)
使用ROPC时,您的应用程序代码具有可用的用户密码。 它违反了安全性最佳做法,也不适用于MFA和联合身份验证用户。不建议使用此赠款,因为它会带来潜在的攻击风险,因此不建议使用。
解决方法是使用ROPC为用户获取令牌。如果用户名或密码不正确,您将得到一个例外,否则,您将获得一个有效的令牌,这意味着凭据是好的。
这里有几个链接,涵盖了ROPC的详细信息(建议不要同时使用。):
例如,对于本机应用程序,代码看起来像这样。
result = await context.AcquireTokenAsync(resource, clientId, new UserPasswordCredential("john@contoso.com", johnsPassword));