Asp.net core 如何使用identityserver4和asp.netcore标识进行用户管理

Asp.net core 如何使用identityserver4和asp.netcore标识进行用户管理,asp.net-core,architecture,identityserver4,asp.net-core-identity,Asp.net Core,Architecture,Identityserver4,Asp.net Core Identity,我正在构建一个包含3个项目的系统,我正在努力实现用户管理。我有3个项目,一个asp.net核心MVC,一个asp.net核心Web API和一个IdentityServer 4。我想使用asp.net核心标识进行用户管理,因为该框架提供了很多功能,但我不知道将其放置在何处。该系统本身还不是一个大系统,但我希望它在未来具有可扩展性。我已经读到identityserver唯一应该做的事情是身份验证和授权,而不是处理用户管理部分(创建用户、更改权限等) 在系统本身,我需要有一个管理员,可以访问用户(通

我正在构建一个包含3个项目的系统,我正在努力实现用户管理。我有3个项目,一个asp.net核心MVC,一个asp.net核心Web API和一个IdentityServer 4。我想使用asp.net核心标识进行用户管理,因为该框架提供了很多功能,但我不知道将其放置在何处。该系统本身还不是一个大系统,但我希望它在未来具有可扩展性。我已经读到identityserver唯一应该做的事情是身份验证和授权,而不是处理用户管理部分(创建用户、更改权限等)

在系统本身,我需要有一个管理员,可以访问用户(通过前端MVC),并可以创建新的或删除用户,等等

所以问题是,我应该实现asp.net core identity在IdentityServer 4项目中提供的所有用户管理功能,还是应该在web API中构建它并让这两个项目访问同一个数据库。我不希望第四个项目只用于用户管理,尽管我知道这是理想的解决方案。 目前,mvc应用程序仅使用identityserver提供的承载令牌与web API连接

或者,我应该走一个新的方向,使用jwt令牌和asp.net核心标识,并且只有两个项目吗


我对这一部分感到非常困惑,我想知道什么是最佳实践。

只有Identity Server项目(以及与之相关的任何项目)才可以访问用户数据库。客户端或API资源需要的所有用户信息,都需要从中获取。
现在,正确设置Identity Server取决于您的需要。如果您想让一些应用程序使用一个简单的应用程序,请使用一个可以登录用户并注册他们的项目,并在config.cs文件中设置客户端和API资源。但这不是一个很好的方法。通常,您应该有一个IS项目用于用户登录和注册,还有一个项目用于管理这些用户以及客户端和API资源。您可以看到一个很好的例子,它还使用ASP.NET标识,并且有一个STS项目(标识服务器)、一个管理项目(用户、客户端、API管理器)和一个API项目(用于所有相关的数据库访问)。希望这能有所帮助。

谢谢,这确实澄清了很多问题。如果我只有这三个应用程序,您是否建议我不要使用identityserver,而是使用asp.net jet身份验证?identityserver的用途是为所有客户端提供集中登录逻辑和单点登录,并管理这些客户端的资源访问。若您只有一个客户端和一个API资源,那个么IdentityServer有点过头了。阅读Identity Server功能,看看它是否符合您的需要。如果你的应用程序只需要Auth,我可以选择JWT。您还可以使用IS4快速启动(有一个具有Asp.Net标识),并将注册和用户管理添加到其中,并将令牌留给IS4。但是其中一个快速启动在生产中可以吗?应该可以。你会像其他项目一样为生产做准备。如果您有多个客户机,这就太麻烦了,因为添加新客户机意味着将其添加到代码中。它们看起来也很平淡。安全方面,它们应该是可以的。注意,如果使用IS,您将无法直接从MVC客户端与用户协作,并且IS将使事情复杂化。定制jwt中间件不会有问题。