【问题标题】:Authenticate User In Azure AD (validate username & password) via Azure Functions通过 Azure Functions 在 Azure AD 中验证用户(验证用户名和密码)
【发布时间】:2019-01-16 20:03:16
【问题描述】:

是否可以创建一个 Azure 函数,它将用户名和密码作为输入参数,并且函数应该针对 Azure AD 验证用户。

【问题讨论】:

  • 是的,这是可能的。 (请参考How to Ask

标签: c# function azure azure-active-directory


【解决方案1】:

首先,值得一提的是,收集 Azure AD 用户的用户名和密码作为应用程序(Azure 功能或 Web 应用程序,您正在开发的任何其他应用程序)的一部分非常违反最佳实践,并会引发多重攻击风险。因此,即使您可以使用变通方法来实现它,请务必从安全角度重新考虑您的要求。

解决方法 - ROPC - 资源所有者密码凭据授予(不推荐,多个问题)

Azure AD 不提供直接 API 来验证用户凭据。作为一种解决方法(也是一个不好的解决方法),您可以使用 资源所有者密码凭据 (ROPC) 流程,它与用户名和密码一起使用来获取令牌。

它违反了安全最佳实践,也不适用于 MFA 和联合身份验证用户。强烈建议不要使用此授权,因为它会带来潜在的攻击风险,因此不推荐。

如果用户名或密码不正确,你会得到一个异常,否则你会得到一个有效的令牌,这意味着凭据是好的。

这里有几个链接,其中包含有关 ROPC 的详细信息(建议不要同时使用它..):

例如,本机应用程序的代码如下所示。

result = await context.AcquireTokenAsync(resource, clientId, new UserPasswordCredential("john@contoso.com", johnsPassword));

其他参考资料

  • Here 是老文章,但还是很详细。看看最后的一长串限制。

【讨论】:

  • 非常感谢您的帮助和建议。
  • 我认为可以通过实际列出使用回答者警告的方法时创建的漏洞来改进这个答案。你能说出至少一种“攻击风险”吗?
  • 我认为可以通过指出存在安全漏洞 once 并离开讲道,唠叨“你怎么敢”有一个不完美的要求来改进这个答案Azure AD' 的美丽出局。许多应用程序在处理自己的密码时保护了用户。如果您可以将此类保护委托给 Microsoft 会更好(哈!),但这不是唯一的方法。
猜你喜欢
  • 2021-07-29
  • 2018-07-11
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 2018-12-25
  • 2017-09-05
相关资源
最近更新 更多