2017-08-24 40 views
2

我在IndetityServer4像这样创造了一个ResourceApi之间的不同:什么是IdentityServer4在ApiResource和范围使用索赔

我已经定义了一个ApiResource称为API 1和指定直接宣称 - 此API资源和我name, sub我已经扩展了这个资源,并指定了两个名为Api1.ReadApi1.Write的作用域,并为每个作用域指定了我对API的特定部分所需的特定声明,但我不明白ApiResource和作用域中使用的声明有什么区别?

是什么意思Claims直接连接在ApiResourceScope中使用的声明?

我曾尝试限制ApiResource UserClaims只为sub and name但如果我想在Api1.Write要求role它在访问令牌,但在Api1定义发送的情况下,只name and sub - 为什么在ApiResource定义UserClaims?

var apiResource = new ApiResource 
      { 
       Name = "Api1", 
       UserClaims = new List<string> { "name", "sub" }, 

       Scopes = new List<Scope> 
       { 
        new Scope 
        { 
         Name = "Api1.Read", 
         UserClaims = new List<string> {"sub", "name"} 
        }, 
        new Scope 
        { 
         Name = "Api1.Write", 
         UserClaims = new List<string> {"sub", "name", "role"} 
        } 
       } 
      }; 

回答

2

按照该documentation on ApiResource,在ApiResourceUserClaims本身将始终被包含在访问令牌。如果您将该api分成多个Scope's,那么列出的UserClaims将被添加到ApiResource中指定的UserClaims

+0

你说得对,那是对的。 – Jenan

相关问题