繁体   English   中英

IdentityServer4 与 ASP.NET 身份

[英]IdentityServer4 with ASP.NET Identity

我必须为 .NET Core 实施 OAuth,决定是 IdentityServer4。 实际上,结果应该是一个带有登录 UI、重置密码 UI 等的 Authentication Endpoint。但是,OAuth 必须适合现有的数据库结构。 所以我不能简单地遵循最简单的“快速入门”手册。

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

我有一个必须使用的现有 SQL 数据库,没有机会进行任何更改。 但是,结构类似于 ASP.NET 核心标识,所以我认为它可以被使用(不知何故)。 我找到了如何实现“自定义用户”的文章

A/直接到IdentityServer4,文章在这里

或者

B/ 到 ASP.NET 核心标识, 这里有文章

两种方法都是可行的,回到最初的问题——我想深入了解 IdentityServer4 并找出它对 ASP.NET Core Identity 的依赖程度。

非常感谢!

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

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

此外,如果您查看快速入门示例项目,您会看到 UserStore 被注入到每个 controller 中。 如果需要,请随意将其替换为您自己的用户存储库。 因此,为了回答您的问题,IdentityServer4 不依赖任何与用户/角色相关的存储框架,但您可以随意附加。

例如:在我的项目中,用户管理和身份验证是 2 个不同的微服务。 在集群中,IdentityServer 在内部调用用户服务来获取请求的用户,但它甚至不是 Auth 微服务的一部分。 auth 服务只关注 OpenId 连接实现,但对用户基本上一无所知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM