如何选择正确的 Microsoft.AspNetCore.Authentication 替代方案

Posted

技术标签:

【中文标题】如何选择正确的 Microsoft.AspNetCore.Authentication 替代方案【英文标题】:How to choose the right Microsoft.AspNetCore.Authentication alternative 【发布时间】:2021-11-17 16:39:45 【问题描述】:

我正在使用 AspNet Core 身份对我的用户进行身份验证。我想连接到远程身份提供商(Microsoft 和 Google)。对于 Google,我认为我可以使用 Microsoft.AspNetCore.Authentication.Google (https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.authentication.google)。

不过,对于 Microsoft,我有几个选择:

Microsoft.AspNetCore.Authentication.AzureAD Microsoft.AspNetCore.Authentication.MicrosoftAccount Microsoft.AspNetCore.Authentication.OpenIdConnect

我首先使用的是 Microsoft.AspNetCore.Authentication.AzureAD。然后我切换到 Microsoft.AspNetCore.Authentication.MicrosoftAccount。我假设这不会产生太大影响,但事实证明现在我的用户的所有名称标识符都已更改。所以,似乎存在差异。

我发现不太清楚不同选项的优缺点是什么。有人可以帮我做出一个好的选择吗?

【问题讨论】:

【参考方案1】:

Microsoft.AspNetCore.Authentication.MicrosoftAccount

此命名空间包含支持基于 Microsoft 帐户 OAuth 的身份验证的类型。 它使用户能够使用他们现有的凭据登录:

1)方便用户。

2) 将管理登录过程的许多复杂性转移到第三方。

更多详情请参考document

Microsoft.AspNetCore.Authentication.OpenIdConnect

此命名空间包含支持基于 OpenIdConnect 的身份验证的类型。OpenID Connect 是 OAuth 2.0 协议之上的身份层。它允许客户端请求和接收有关经过身份验证的会话和最终用户的信息。

如果您需要向应用程序添加身份验证,并且希望使用第三方作为身份验证提供者,那么推荐的实现方式是使用 OpenIdConnect。

与 Google 或 Facebook 一样,OneLogin 也是 OpenId Connect provider,这意味着如果您使用 OneLogin 来存储和管理用户的身份,您还可以使用 OneLogin 在自定义构建的应用程序上对这些用户进行身份验证。

更多详情请参考document

Microsoft.AspNetCore.Authentication.AzureAD

Microsoft.AspNetCore.Authentication.AzureAD 包。根据document,自 ASP.NET core 5.0 起,用户应使用 Microsoft.Identity.Web 包与 Azure AD 和 Azure ADB2C 集成。

要从 Microsoft.AspNetCore.Authentication.AzureAD 迁移到 Microsoft.Identity.Web,请参阅document

【讨论】:

非常感谢您提供如此详细的概述。不过我还是有点疑惑。在 AspDotNet Core Identity 中,我了解到使用 AddGoogle、AddFaceBook 方法使用外部身份提供程序 (docs.microsoft.com/en-us/aspnet/core/security/authentication/…)。添加微软帐户。在这里使用 OpenIdConnect 的用例是什么(与 AddGoogle、AddFaceBook 等方法相比如何)? Ans 类似,为什么我还可以使用 AddMicrosoftAccount 连接到 Azure AD 时使用 Microsoft.Identity.Web。你看,我仍然担心我错过了什么。

以上是关于如何选择正确的 Microsoft.AspNetCore.Authentication 替代方案的主要内容,如果未能解决你的问题,请参考以下文章

Authorize Policy 属性总是返回 403 禁止使用 .net core Identity 和 JwtBearerAuthentication

如何在javascript测验中为正确的选择和错误的选择着色?

如何在单元格选择/取消选择时正确切换 UITableViewCell 的 accesoryType?

如何使用 jQuery 在列表中选择正确的按钮?

如何正确选择GoDaddy?

取消隐藏时如何以正确的宽度显示隐藏的选择?