具有ASP.NET身份的IdentityServer4

问题描述 投票:0回答:1

我必须为.NET Core实现OAuth,决定是IdentityServer4。实际上,结果还应该是带有登录用户界面,重置密码用户界面等的身份验证端点。但是,OAuth必须适合现有的数据库结构。因此,我不能简单地遵循最简单的“快速入门”手册。

我试图理解IdentityServer4的概念,并且对ASP.NET Core身份及其在其中的作用感到困惑。据我所知,ASP.NET Core Identity提供了用于用户管理的框架,包括登录,注册,密码重置等,包括数据库(使用EntityFramework)。

我有一个必须使用的现有SQL数据库,没有任何更改的机会。但是,结构类似于ASP.NET Core Identity,因此我假设可以使用它(以某种方式)。我发现文章如何实现“自定义用户”的分类]

A /直接到IdentityServer4,文章here

B /到ASP.NET Core身份,文章here

这两种方法都是可行的,回到最初的问题-我想更深入地了解IdentityServer4,并找出它在多大程度上依赖于ASP.NET Core Identity。

非常感谢!

c# asp.net-core asp.net-identity identityserver4
1个回答
0
投票

IdentityServer4具有2个DbContext,它们是框架的一部分,如果要将它们存储到数据库中,则必须使用。用于客户端和流配置的ConfigurationDbConext。还有PersistentGrantDbContext用于存储令牌等。这只是IdentityServer4的核心部分。这些也可以存储在内存中,但我不建议这样做。这2个dbcontext可以与现有数据库表一起存储,也可以存储在其他数据库中。

用户管理等不是IdentityServer框架的一部分,您可以使用自己喜欢的实现,例如ASP.NET Core身份或自定义名称。在您提到的文章中,魔术发生在IProfileService服务中,在其中检索用户,在IResourceOwnerPasswordValidator中验证凭据。使用这些自定义实现从现有数据库中检索和验证用户。

此外,如果您查看快速入门示例项目,则会看到UserStore已注入到每个控制器中。如果需要,可以随时用您自己的用户存储库替换它。

例如:在我的项目中,用户管理和身份验证是2种不同的微服务。在集群中,IdentityServer在内部调用用户服务以获取所请求的用户,但它甚至不属于Auth微服务。 auth服务仅关注OpenId connect实现,但对用户几乎一无所知。

© www.soinside.com 2019 - 2024. All rights reserved.