在尝试了解 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的教程。
这些方法有何不同?我应该使用哪一个?为什么?
将来,我希望能够在用户目录中查询其他用户的列表。用这三种方法中的任何一种都可以更轻松地满足该要求吗?
答案 0 :(得分:3)
OpenIdConnect
:这是通用的OpenID Connect协议,您可以使用它与许多不同的身份验证提供程序进行登录,因为它是许多人都将支持的协议。您可以使用OIDC登录上述任何一项(以及许多其他服务),但这将需要您进行更多配置,例如,您需要找出特定的地址。您始终可以使用 OpenIdConnect 或 OAuth 身份验证方案对大多数身份验证提供程序进行身份验证,但是这些是“手动”方案,需要您配置其他内容。所有其他身份验证方案,包括 MicrosoftAccount 和 AzureAD ,还包括其他 Google 或 Twitter 这些协议并已预先配置,因此您无需进行其他设置。因此,这些主要是为了方便起见和更多专业支持。
因此,当您想通过Microsoft或Azure进行身份验证时,应选择 MicrosoftAccount 或 AzureAD 。哪一个取决于您要在哪里进行身份验证。如果您有Azure AD,则应该使用它。