在后台对Azure Active Directory进行身份验证

时间:2018-01-30 18:16:23

标签: c# asp.net azure-active-directory

我有一个ASP.net(4.5)应用程序,目前使用Identity来验证用户身份。用户必须通过登录页面提供用户名密码

除了Identity之外,我还想对 Azure的Active Directory 进行检查。这是因为某些用户存储在数据库中(通过Identity进行验证),其他用户将存储在Azure的Active Directory中。

理想情况下,我想重新使用用户已输入的用户名/密码,并在后台对Azure AD执行验证。

然而,通过Authentication Scenarios for Azure AD阅读,我无法找到符合我需求的场景。也许我只是错过了它,或者我完全不理解这些情景?

我的Web应用程序的唯一解决方案是重定向到Azure AD吗?

1 个答案:

答案 0 :(得分:1)

有办法做你想做的事,但我强烈建议你不要这样做。

资源所有者密码凭据流允许您使用用户名+密码+客户端ID +客户端密钥进行身份验证。

斯科特布拉迪在这里的文章解释了大多数反对它的观点:https://www.scottbrady91.com/OAuth/Why-the-Resource-Owner-Password-Credentials-Grant-Type-is-not-Authentication-nor-Suitable-for-Modern-Applications

我不推荐它的主要原因是因为这里的情况不起作用:

  1. 用户密码已过期
  2. 用户已联合(MS帐户或本地广告)
  3. 用户启用了多重身份验证
  4. 您的应用程序所需的权限需要用户同意
  5. 因此,您确实应该将这些用户重定向到Azure AD中进行身份验证。

    然后,如果您获得有效的ID令牌,则它们已经过身份验证。

    您可以做的是在用户完成用户名(例如通过AJAX调用)后检查数据库,如果他们是Azure AD用户,则将其重定向到立即登录。另一种方法是提供一个单独的登录按钮,其中包含"使用Office 365"。

    登录