ASP.NET Core Web API 模板中没有个人用户帐户身份验证选项

Posted

技术标签:

【中文标题】ASP.NET Core Web API 模板中没有个人用户帐户身份验证选项【英文标题】:No Individual User Accounts auth option in ASP.NET Core Web API template 【发布时间】:2017-04-25 00:30:30 【问题描述】:

我有点困惑,为什么最新的 。

是否仍然可以像 MVC 模板那样实现单个用户帐户,还是没有意义?

假设我正在创建一个独立的 Web API,该 API 将包含我的所有业务逻辑和数据层,用于访问具有 AspNet Identity 表的数据库。我计划使用 MVC 应用程序调用此 API。

我知道这样做的一种方法是创建一个带有个人用户帐户身份验证的 asp.net MVC 应用程序,并使用 controllers/api 文件夹在 MVC 应用程序中直接构建 API。但是,我不想这样做,因为我希望 API 成为自己的独立项目,可以托管在完全不同的服务器上并由多个应用程序访问,而不仅仅是 MVC 应用程序。

由于没有模板,有人可以指导我在这种情况下通常如何进行身份验证的正确方向吗?

【问题讨论】:

您可以复制相关的位,但 WebAPI 和 MVC 现在本质上是一个单一的 API。唯一的区别是您没有视图以及默认路由的配置方式。对于 WebAPI,您通常不需要单独的帐户,因为默认情况下它无法创建帐户(内置于 MVC 模板中)。您可能希望对 WebAPI 使用 OAuth 或 OpenID 身份验证,而不是使用用户名和密码进行身份验证。由于 ASP.NET Core 不再提供任何 OAuth Server 中间件,您必须使用 OpenIddict 或 IdentServer4 进行授权 所以个人帐户在 WebAPI 模板中毫无意义 @Tseng 感谢您的回答。所以我仍然不明白的是:假设我的 MVC 应用程序有一个登录表单。该登录表单应该向api发送某种带有用户名和密码的ajax请求以进行身份​​验证和授权吗?然后API响应并设置cookie或其他东西?我只是想确保我处于正确的心态和正确的道路上。 期待看到这个查询的更多发展。 @Tseng 您说 ASP.NET Core Identity 个人帐户模板在 ASP.NET Core WebAPI 模板中毫无意义,因为 OpenID 身份验证将用于 WebAPI,而不是使用用户名和密码进行身份验证,但是如何选择在后端使用 WebAPI 决定了前端客户端的用户体验。我有一些用户不想在任何现有的 OpenId 提供商处没有 OpenId 帐户,他们如何进行身份验证?他们应该能够使用用户名和密码进行注册,不是吗? 【参考方案1】:

我认为您可以使用IdentityServer4 ,它允许使用 OpenID Connect 和 OAuth2 等协议对 ASP .NET Core Web API 实施单点登录和访问控制。它提供与 ASP.NET Core Identity 和 Entity Framework Core 的集成。

您需要安装到以下 nuget 包:

Install-Package IdentityServer4

并将 IdentityServer 中间件添加到 HTTP 管道:

app.UseIdentityServer();

您可以找到几个快速入门示例here 或关注this 文章。

【讨论】:

是的,您也可以使用 OpenIddict,据说它比 IdentityServer4 更简单,并且是基于 ASOS 构建的。不过,这个问题基本上是在询问为什么 ASP.NET Core Identity 模板(如 AccountController.cs)不适用于新的 ASP.NET Core Web API 项目。由于不可用,ASP.NET Core 的贡献者似乎在说,我们没有看到 Web API 中的 Identity 用例,如果有人支持支持资源所有者密码凭据授予的身份验证 API,这对我来说没有意义输入 无论是 OpenIddicit 还是 IdentityServer4 还是手卷,都可能希望在用于身份验证的核心 Web API 中使用核心身份来获取资源所有者密码凭据授予类型注册和后续登录支持 Identiyserver4 是安装到 web api 项目中的东西吗?这个我没看懂。 Identity Server 现在是 Duende,一个付费框架。【参考方案2】:

.NET Core 2.0 Preview 1 中提供了 ASP.NET Core Web API 的个人用户帐户身份验证选项。

很遗憾 .NET Core 2.0 Preview 1 在 VS 2017 版本中不可用。

但是你可以安装Visual Studio 2017 Preview(你可以和VS 2017稳定版一起使用):

【讨论】:

那么这个功能在 .NET Core 2.0 Preview 1 中可用吗? @BrianOgden,确切地说,对于 .NET Core 2.0 预览版 1 这是带走的吗?我已经安装了 VS 2017 Preview,个人用户帐户的唯一选择是“连接到云中的现有用户存储” @AndrewRoth,是的,看起来像 这个选项没有被去掉,但是如果你从 API 模板创建项目,它会被隐藏。

以上是关于ASP.NET Core Web API 模板中没有个人用户帐户身份验证选项的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Web API 控制器添加到现有的 ASP.NET Core MVC?

使用 ASP.NET Core 6 Minimal API 在 Azure 中停止 Web 应用程序时未调用 BackgroundService StopAsync

Blazor ASP.Net Core 3.1 Web API 在发布时返回 404 错误

将文件从 ASP.NET Core Web api 发布到另一个 ASP.NET Core Web api

Visual Studio 2019 ASP.NET Core API 项目模板损坏?

创建API服务最小只要4行代码!!!尝新体验ASP.NET Core 6预览版本中的最小Web API(minimal APIS)新特性