gpt4 book ai didi

asp.net-core - IdentityServer4 + Asp.Net Core Identity - 将身份映射到应用程序数据库用户

转载 作者:行者123 更新时间:2023-12-04 02:22:20 28 4
gpt4 key购买 nike

我正在尝试使用 Asp.Net Core Identity 实现 IdentityServer4。
我想使用 IdentityServer4 作为始终使用相同身份的 API 的集中式身份验证/授权点。
因此,我们的想法是将 Asp.Net Core Identity 内容存储在用作身份存储的 SQL 数据库中。

现在的问题是如何将集中身份映射到特定于应用程序的数据。
我想在多个应用程序中使用相同的身份用户,但在每个应用程序中,用户都有其他相关实体、角色等。

我通读了 IdentityServer4 的文档,但找不到与建议结构相关的任何内容。

据我了解,您以某种方式将身份 ID 映射到您的本地应用程序用户。
诸如名字等基本数据存储在集中身份存储中,应用程序特定数据存储在应用程序特定数据库中。所以你不会在应用程序特定的数据库中保存名字等,对吗?
在您需要用户特定数据的每个请求中,将查询身份服务器以获取信息/声明?
注册流程呢?

有没有人有一个清晰的结构设置可以用来理解整个设置?
(分离如 Asp.Net Identity Provider、IdentityServer4、Protected Api。)

最佳答案

So you would not save firstname etc in the application specific db right?



是的,用户特定的属性应该进入用户配置文件并保存在 IdentityServer 的用户存储(数据库)中。应用程序特定的用户数据应存储在应用程序商店中。

In the every request where you need user specific data will query the identity server to get information/claims?



不一定,用户特定数据可以作为声明包含在身份 token 中。然后,声明将作为身份验证票存储在 cookie 中。对于每个请求,这些声明(存储在 cookie/s 中)可通过 Controller 的 User 属性获得
var identity = (ClaimsIdentity)User.Identity;
IEnumerable<Claim> claims = identity.Claims;

您可以根据用户 ID 存储和查询与应用程序相关的用户数据( sub 声明可以用作用户 ID)。

如果您在应用程序中需要大量特定于用户的数据,那么将所有内容都包含在身份 token 中并不是最佳选择,而且您不太可能为每个请求都需要这些数据。因此,当您需要额外信息时,您可以查询身份服务器的 UserInfo 端点。只需在身份 token 中包含识别用户所需的基本信息。

What about the registration process?



注册是一个完全独立的工作流程,与身份服务器无关。您只需要将用户保存到身份存储(可能使用 asp.net 身份)。当然,您可以将注册 Controller 与身份服务器一起托管,以便与身份相关的内容物理上位于同一台服务器上。您也可以从您托管注册过程的任何地方写入 IdentityServer 用户存储(例如,单独的管理 UI,或从涉及电子邮件验证、手动批准等的工作流...)

关于asp.net-core - IdentityServer4 + Asp.Net Core Identity - 将身份映射到应用程序数据库用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46037909/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com