Asp.Net Core/IdentityServer复杂授权
对于我正在进行的项目,我需要使用一个公共标识服务器创建两个独立(但并非完全无关)的应用程序。我选择IdentityServer4就是为了这个目的,它对我来说很好 但是,我需要能够将用户分配到多个公司/项目(是的,这是一个真实的案例),并可能分配到每个公司/项目中的不同角色。然而,我无法为此设计索赔结构 我认为有两种方法可以解决这个问题Asp.Net Core/IdentityServer复杂授权,asp.net,asp.net-core,identityserver4,asp.net-authorization,Asp.net,Asp.net Core,Identityserver4,Asp.net Authorization,对于我正在进行的项目,我需要使用一个公共标识服务器创建两个独立(但并非完全无关)的应用程序。我选择IdentityServer4就是为了这个目的,它对我来说很好 但是,我需要能够将用户分配到多个公司/项目(是的,这是一个真实的案例),并可能分配到每个公司/项目中的不同角色。然而,我无法为此设计索赔结构 我认为有两种方法可以解决这个问题 为每个公司/项目创建一个复杂的索赔,其中将包含公司ID和用户在该公司中的角色。可以是JSON格式或自定义字符串,如companyGUID\u roleClaim
companyGUID\u roleClaim
然而,当我做了一个关于它的小研究时,我意识到有很多人认为这不是正确的方法,因为他们认为声明应该是简单的键值对也许我从错误的角度看问题,或者这两种观点中的一种是可以接受的。或者有另一种解决办法。你能帮我找到解决这个问题的方法吗?如果你要使用第一种方法,你可能会遇到一些问题。您在声明中指定的角色在两个应用程序中可能有不同的含义,而不是完全无关的 声明代表用户的身份,而不是允许用户访问的内容 您可以编写一个授权服务,从数据库中提供所需的授权数据。然后,您可以通过编写授权策略在这两个应用程序中进行授权。您可以通过使用
[Authorize(Policy=“MyPolicy”]
对资源进行去编码来保护资源
leastprivilege为此写了一篇很好的博客,以及为什么不应该使用权限声明: