ASP.NET Core Web API模板中没有个人用户账户认证选项。

48

我有些困惑,为什么最新的ASP.NET Core Web API模板中没有“个人用户账户”认证选项。

是否仍然可以按照MVC模板的方式实现个人用户账户,或者这样做没有意义?

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

我知道做到这一点的一种方法是创建一个具有单独用户账户验证的ASP.NET MVC应用程序,并在控制器/Api文件夹中构建API。但是,我不想以这种方式进行,因为我希望API成为自己独立的项目,可以在完全不同的服务器上托管,并被多个应用程序访问,而不仅仅是MVC应用程序。

由于没有模板,有人能否指导我在这种情况下身份验证通常如何工作?


7
你可以复制相关部分,但WebAPI和MVC现在基本上是一个API。唯一的区别是没有视图以及默认路由的配置方式。对于WebAPI,通常不需要单独的账户,因为默认情况下它没有创建账户的方法(这是MVC模板中内置的)。你可能希望使用OAuth或OpenID身份验证来进行WebAPI身份验证,而不是使用用户名和密码进行身份验证。由于ASP.NET Core不再提供OAuth服务器中间件,所以你必须使用OpenIddict或IdentServer4进行授权。 - Tseng
2
所以在WebAPI模板中,个人账户是没有意义的。 - Tseng
3
@Tseng,谢谢您的回答。但我仍然不理解以下内容:假设我的MVC应用程序有一个登录表单。那个登录表单应该发送某种带有用户名和密码的ajax请求来进行身份验证和授权,对吗?然后API会响应并设置cookie或其他内容?我只想确保我的思路正确,走在正确的道路上。 - Blake Rivell
1
期待在这个查询上看到更多的开发。 - Zeshan Munir
@Tseng 是的,这很有道理,也让我明白了为什么不能在 dotcore new webapi 项目中生成 ASP.NET Core Identity 模板。我的想法是,我想允许用户使用用户名/密码注册新帐户,并在后端使用 Web API 存储成功创建的帐户,并允许用户稍后使用该用户名/密码登录,而 ASP.NET Core Identity 似乎是一个很好的开箱即用的解决方案。 - Brian Ogden
显示剩余11条评论
2个回答

11

ASP.NET Core Web API 中的个人用户账户身份验证选项可在 .NET Core 2.0 预览版1 中使用。

不幸的是,.NET Core 2.0 预览版1 不可在 VS 2017 发布版本中使用。

但您可以安装Visual Studio 2017 预览版(可以与 VS 2017 稳定版本并行使用):输入图像描述


这个功能在.NET Core 2.0预览版1中可用吗? - Brian Ogden
@BrianOgden,没错,这是针对.NET Core 2.0预览版1的。 - Alexan
8
这个被移除了吗?我安装了VS 2017预览版,但我的个人用户账户选项只有“连接到云中的现有用户存储” 。 - Andrew Roth
2
这个选项并没有被取消,但是如果你从API模板创建项目的话,它会被隐藏起来。 - Roman Starkov
2
在 .NET 6 Web API 中也不可用。 - niico
显示剩余3条评论

5
我认为你可以使用IdentityServer4,它允许使用像OpenID Connect和OAuth2这样的协议实现ASP.NET Core Web API的单一登录和访问控制。它提供与ASP.NET Core Identity和Entity Framework Core的集成。
你需要安装以下NuGet包:
Install-Package IdentityServer4

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

app.UseIdentityServer();

您可以在这里找到几个快速入门示例,或者阅读这篇文章

该段内容介绍了一些关于IT技术的快速入门示例,您可以在上述链接中查看。

是的,你也可以使用OpenIddict,它据说比IdentityServer4甚至更简单,并且构建在ASOS之上。然而,这个问题基本上是在问为什么ASP.NET Core身份模板(如AccountController.cs)不适用于新的ASP.NET Core Web API项目。通过不可用性,ASP.NET Core的贡献者似乎在说我们不认为在Web API中有使用Identity的用例,但如果要搭建支持资源所有者密码凭据授权类型的身份验证API,这对我来说是没有意义的。 - Brian Ogden
无论是OpenIddicit、IdentityServer4还是手动编写,您可能希望在Core Web API中使用Core Identity来进行资源所有者密码凭据授权类型注册和后续登录支持的身份验证。 - Brian Ogden
IdentityServer4是安装在Web API项目中的东西吗?我还没有理解这个。 - variable
身份服务器现在更名为Duende,是一个付费框架。 - niico

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接