【发布时间】:2019-01-16 20:03:16
【问题描述】:
是否可以创建一个 Azure 函数,它将用户名和密码作为输入参数,并且函数应该针对 Azure AD 验证用户。
【问题讨论】:
-
是的,这是可能的。 (请参考How to Ask)
标签: c# function azure azure-active-directory
是否可以创建一个 Azure 函数,它将用户名和密码作为输入参数,并且函数应该针对 Azure AD 验证用户。
【问题讨论】:
标签: c# function azure azure-active-directory
首先,值得一提的是,收集 Azure AD 用户的用户名和密码作为应用程序(Azure 功能或 Web 应用程序,您正在开发的任何其他应用程序)的一部分非常违反最佳实践,并会引发多重攻击风险。因此,即使您可以使用变通方法来实现它,请务必从安全角度重新考虑您的要求。
解决方法 - ROPC - 资源所有者密码凭据授予(不推荐,多个问题)
Azure AD 不提供直接 API 来验证用户凭据。作为一种解决方法(也是一个不好的解决方法),您可以使用 资源所有者密码凭据 (ROPC) 流程,它与用户名和密码一起使用来获取令牌。
它违反了安全最佳实践,也不适用于 MFA 和联合身份验证用户。强烈建议不要使用此授权,因为它会带来潜在的攻击风险,因此不推荐。
如果用户名或密码不正确,你会得到一个异常,否则你会得到一个有效的令牌,这意味着凭据是好的。
这里有几个链接,其中包含有关 ROPC 的详细信息(建议不要同时使用它..):
例如,本机应用程序的代码如下所示。
result = await context.AcquireTokenAsync(resource, clientId, new UserPasswordCredential("john@contoso.com", johnsPassword));
其他参考资料
【讨论】: