gpt4 book ai didi

c# - 身份服务器 4 和用户权限

转载 作者:行者123 更新时间:2023-12-04 01:13:21 25 4
gpt4 key购买 nike

我们正在使用身份服务器来授予对 API 的访问权限。到目前为止,我们使用(或需要)的只是 ClientCredentials(机器对机器),其中不涉及用户。

现在我们得到了用户应该参与的要求,我们必须交付用户权限。

我已经阅读了很多关于 Granttypes: Implicit、Authorization code、Hybrid 等的文章……但仍然没有找到关于最佳实践的明确答案。

有没有办法在 access_token 中集成用户权限(这也是个好主意吗?)。 AspNetIdentity 已经集成,并且表存在于 identityserver 数据库中。

services.AddIdentity<User, IdentityRole>()
.AddEntityFrameworkStores<IdentityContext>()
.AddDefaultTokenProviders();

如何发送客户端凭据和用户凭据,以便我们的身份服务器也可以收集用户信息(权限、声明、角色等...)?

非常感谢任何帮助。

谢谢

最佳答案

您在这里混淆了概念。 Identity Server 仅处理用户主体(基本上只是属于“用户”的一组声明)。实际的用户管理是外包的,最常见的是 Identity。身份本身也是基于声明的,角色实际上只是一种声明。

授权完全是另外一头野兽,在技术上并不明确涉及身份或身份服务器,尽管它们通常充当所述授权的网关。在 ASP.NET Core 中,授权可以是基于角色、基于声明或基于策略的,然后是与技术框架无关的资源级授权选项。然而,这最终仍将依赖于三巨头之一:角色、主张或政策。它将仅具有特定于特定资源的附加组件。您想授权哪种方式完全取决于您,当然您也可以混合搭配。

最终,您只需通过 Identity 提供的工具为您的用户设置角色和/或声明,当然,这些工具将保留在您的用户/角色存储中。然后,当通过 Identity Server 或直接进行身份验证时,将创建一个 ClaimsPrincipal 并将其添加到 HttpContext。当需要授权时,将以某种方式利用此主体上的声明来确定是否应允许访问。就这么简单。

Identity Server 仅充当集中式身份验证提供程序。由于通信是通过 HTTP 进行的,因此它实际上将返回 JSON,特别是 JWT。然后,ASP.NET Core 的身份验证中间件(本应设置为使用 Identity Server 作为其提供者)将简单地解密 JWT 并从中创建实际的 ClaimsPrincipal 实例。不过,在最初的实现之后,您无需担心任何这些。一切都集成后,使用 Identity Server 的事实几乎无关紧要。

关于c# - 身份服务器 4 和用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54869075/

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