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

What is the difference between MicrosoftAccount, AzureAD and OpenIdConnect authentication?

当我试图理解 MicrosoftAccountAzureADOpenIDConnect[=29= 之间的区别时,我感到非常困惑] 认证。

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

我开始从模板创建应用程序并selected "local accounts" 身份验证。然后我按照这个教程添加了MicrosoftAccount认证(https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-3.1)。这正在使用 Microsoft.AspNetCore.Authentication.MicrosoftAccount 并且似乎工作正常。

但是,当我从模板和 select "work or school account" 身份验证创建新应用时,我可以看到它使用了不同的库 - Microsoft.AspNetCore.Authentication.AzureAD.UI。它似乎做同样的事情。我可以看到我可以连接到一些事件以将 AAD 用户与我的本地数据库连接起来。

通过网络我发现了一些其他使用 OpenIDConnect 的教程。

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

将来我希望能够在用户的目录中查询其他用户的列表。使用这三种方法中的任何一种是否更容易满足该要求?

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

您始终可以使用 OpenIdConnectOAuth 身份验证方案与大多数身份验证提供商进行身份验证,但这些是“手动”方案这将需要您配置其他内容。所有其他身份验证方案,包括 MicrosoftAccountAzureAD 以及其他类似 GoogleTwitter 建立在这些协议之上,并进行了预配置,因此您不需要设置太多其他内容。所以这些主要是为了方便和更专业的支持。

所以当你想通过Microsoft或Azure进行身份验证时,你应该选择MicrosoftAccountAzureAD。其中哪一个取决于您要在哪里进行身份验证。如果您有 Azure AD,那么您应该使用它。