首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Identity server 4和用户权限

Identity server 4和用户权限
EN

Stack Overflow用户
提问于 2019-02-25 23:04:17
回答 1查看 2.1K关注 0票数 3

我们使用identity server授予对apis的访问权限。到目前为止,我们使用(或需要)的都是ClientCredentials (机器对机器),其中不涉及用户。

现在,我们得到了用户应该参与的要求,并且我们必须提供用户权限。

我读了很多关于授权类型的东西:隐式,授权代码,混合等等。但是仍然没有找到关于最佳实践的明确答案。

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

代码语言:javascript
复制
services.AddIdentity<User, IdentityRole>()
.AddEntityFrameworkStores<IdentityContext>()
.AddDefaultTokenProviders();

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

任何帮助都是非常感谢的。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-02-25 23:32:12

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

授权是一个完全不同的东西,从技术上讲,它并不显式地涉及Identity或Identity Server,尽管它们通常充当上述授权的网关。在ASP.NET核心中,授权可以是基于角色、基于声明或基于策略的,然后是技术上与框架无关的资源级授权选项。然而,这最终仍将依赖于三大因素之一:角色、声明或策略。它将简单地添加一个特定于特定资源的组件。你想用哪种方式授权完全取决于你,当然你也可以混合搭配。

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

Identity Server只是充当集中式身份验证提供程序。由于通信是通过HTTP进行的,因此它实际上将返回JSON,特别是JWT。然后,JWT的身份验证中间件将被设置为使用Identity Server作为其提供者,它将简单地解析ASP.NET并从中创建实际的ClaimsPrincipal实例。不过,在初始实现之后,您不需要担心任何这些问题。集成所有内容后,使用Identity Server这一事实实际上是无关紧要的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54869075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档