对于我正在从事的项目,我需要使用公共身份服务器创建两个单独的(但并非完全无关)应用程序。我为此选择了IdentityServer4,它对我来说很好用。
但是,我需要能够将用户分配到多个公司/项目(是的,这是现实生活中的情况),并且可能在每个公司/项目中都分配不同的角色。但是,我无法为此设计索赔结构。
我看到两种可以解决此问题的方法;
companyGUID_roleClaim
之类的自定义字符串但是,当我对此进行小型研究时,我意识到有很多人认为这不是正确的方法,因为他们认为声明应该是简单的键值对。
也许我从错误的角度看待它,或者这两个中的一个是可以接受的。或者还有另一种解决方案。您能帮我找到解决这个问题的方法吗?
最佳答案
如果要使用第一种方法,可能会遇到一些问题。您在声明中指定的角色在两个(并非完全不相关的)应用程序中可能具有不同的含义。
声明代表用户的身份,而不是用户被允许访问的身份。
您可以编写授权服务,该服务将从数据库中提供所需的授权数据。通过编写授权策略,您可以在两个应用程序中进行授权。您可以通过使用[Authorize(Policy="MyPolicy"]
对资源进行脱拼来保护您的资源。
Minimumprivilege撰写了一个不错的博客,介绍了为什么不应该使用权限声明:
https://leastprivilege.com/2016/12/16/identity-vs-permissions/
关于asp.net - Asp.Net Core/IdentityServer综合授权,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42116308/