使用IdentityServer v3进行MembershipReboot

时间:2015-06-02 09:45:09

标签: identityserver3 membershipreboot

我无法从MembershipReboot和Thinktecture IdentityServer中提取UserAccount属性。我在这里使用Sample repo运行并运行:https://github.com/identityserver/IdentityServer3.MembershipReboot

当我在隐式授权流程中请求“openid profile”范围时,我从id_token和userinfo端点的响应中遗漏了许多用户帐户字段,例如“given_name,middle_name”等。我理解这是因为它们需要在GetClaimsFromAccount函数中分配。

我可以看到requestedClaims进入MembershipRebootUserService类的GetProfileDataAsync()函数,如果我将鼠标悬停在GetClaimsFromAccount中的TAccount实例上,我可以看到CustomUser动态代理中出现的Firstname,Lastname等属性,但我可以'为了我的生活,弄清楚如何访问它们并将它们复制到索赔集合中?

更多信息:

我怀疑问题出在这一行:

 claims.AddRange(userAccountService.MapClaims(account));

看起来这应该是将用户帐户属性转换为声明,但我没有得到任何回复。

1 个答案:

答案 0 :(得分:2)

我理解它的工作方式是向Scope对象添加一个选项以返回用户的所有声明。 IncludeAllClaimsForUser 是关键属性。

e.g。

new Scope
{
  Enabled = true,
  Name = "roles",
  Type = ScopeType.Identity,
  IncludeAllClaimsForUser = true,
  Claims = new List<ScopeClaim>
  {
    new ScopeClaim("role")
  }
}

我的请求也包含role属性。这为我从MR中撤回了对用户的所有索赔。我的例子是Implicit flow btw。