1

当我试图了解MicrosoftAccountAzureADOpenIDConnect身份验证之间的区别时,我感到非常困惑。

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

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

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

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

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

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

4

1 回答 1

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

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

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

于 2020-04-04T15:49:51.953 回答