MicrosoftAccount,AzureAD和OpenIdConnect身份验证之间有什么区别?

时间:2020-04-04 14:11:12

标签: authentication asp.net-core asp.net-core-mvc openid-connect microsoft-account

在尝试了解 MicrosoftAccount AzureAD OpenIDConnect 身份验证之间的区别时,我感到非常困惑。

我正在尝试构建一个.Net Core MVC应用程序,该应用程序允许某些用户使用本地帐户进行身份验证,而某些用户使用Microsoft帐户进行身份验证。我确实需要在DB中有一个本地用户来进行两种身份验证,因为我有一些基于此身份验证的自定义授权机制。

我首先从模板创建应用程序,然后选择“本地帐户”身份验证。然后,根据本教程https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-3.1添加了MicrosoftAccount身份验证。这正在使用Microsoft.AspNetCore.Authentication.MicrosoftAccount,并且似乎工作正常。

但是,当我从模板创建一个新应用并选择“工作或学校帐户”身份验证时,我可以看到它使用了另一个库-Microsoft.AspNetCore.Authentication.AzureAD.UI。似乎做同样的事情。我可以看到有一些事件可以将AAD用户与本地数据库连接起来。

浏览网络时,我发现其他一些出于相同目的而使用OpenIDConnect的教程。

这些方法有何不同?我应该使用哪一个?为什么?

将来,我希望能够在用户目录中查询其他用户的列表。用这三种方法中的任何一种都可以更轻松地满足该要求吗?

1 个答案:

答案 0 :(得分:3)

  • MicrosoftAccount :这是使用OAuth2使用常规Microsoft帐户进行的登录。这也是Microsoft所谓的“私人帐户”,当您只想使用某人的Microsoft登录名作为外部身份验证提供程序来对某人进行身份验证时,这很有用。这类似于您使用Google帐户登录网站的方式。
  • AzureAD :这是特定Azure租户的登录。这通常被称为“工作或学校帐户”,因为它不会使人们使用公共帐户登录,而是使用某些绑定到某个组织的帐户。通常,您将在Azure租户中拥有直接用户(或将其配置为允许外部用户),但是您想要控制通过该Azure AD的访问。
  • OpenIdConnect:这是通用的OpenID Connect协议,您可以使用它与许多不同的身份验证提供程序进行登录,因为它是许多人都将支持的协议。您可以使用OIDC登录上述任何一项(以及许多其他服务),但这将需要您进行更多配置,例如,您需要找出特定的地址。

您始终可以使用 OpenIdConnect OAuth 身份验证方案对大多数身份验证提供程序进行身份验证,但是这些是“手动”方案,需要您配置其他内容。所有其他身份验证方案,包括 MicrosoftAccount AzureAD ,还包括其他 Google Twitter 这些协议并已预先配置,因此您无需进行其他设置。因此,这些主要是为了方便起见和更多专业支持。

因此,当您想通过Microsoft或Azure进行身份验证时,应选择 MicrosoftAccount AzureAD 。哪一个取决于您要在哪里进行身份验证。如果您有Azure AD,则应该使用它。