gpt4 book ai didi

Asp.Net Core/IdentityServer 复杂授权

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

对于我正在从事的项目,我需要创建两个独立的(但并非完全不相关的)应用程序,并使用一个公共(public)身份服务器。为此,我选择了 IdentityServer4,它对我来说效果很好。

但是,我需要能够将用户分配给多个公司/项目(是的,这是一个真实的案例)并且可能在每个公司/项目中分配不同的角色。但是,我无法为此设计 claim 结构。

我看到有两种方法可以解决这个问题;

  1. 为每个公司/项目创建一个复杂的声明,其中将包含 companyId 和用户在该公司中的角色。可以是 JSON 形式或自定义字符串,如 companyGUID_roleClaim然而,当我对此做了一个小的研究时,我意识到有很多人认为这不是正确的方法,因为他们认为声明应该是简单的键值对。

  2. 让应用程序连接/查询身份数据库以检索与事件用户关联的公司/项目和角色,并使用基于这些数据的策略保护资源。

也许我从错误的角度看待它,或者这两者之一是可以接受的。或者有另一种解决方案。你能帮我找到解决这个问题的办法吗?

最佳答案

如果您打算使用第一种方法,您可能会遇到一些问题。您在声明中指定的角色在您的两个并非完全不相关的应用程序中可能具有不同的含义。

声明代表用户的身份,而不是他/她被允许访问的内容。

您可以编写一个授权服务,从数据库中提供所需的授权数据。比您可以通过编写授权策略在两个应用程序中进行授权。您可以通过使用 [Authorize(Policy="MyPolicy"] 去除资源来保护您的资源。

leastprivilege 写了一篇关于它的不错的博客以及为什么你不应该使用声明来获取权限: https://leastprivilege.com/2016/12/16/identity-vs-permissions/

关于Asp.Net Core/IdentityServer 复杂授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42116308/

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