我在结合Thinktecture IdentityServer从MembershipReboot中提取MembershipReboot属性时遇到了困难。我已经在这里使用示例repo启动和运行:https://github.com/identityserver/IdentityServer3.MembershipReboot
当我在隐式格兰特流中请求"openid配置文件“范围时,我丢失了许多用户帐户字段,如"given_name,middle_name”等来自id_token和来自userinfo端点的响应。我理解这是因为需要在GetClaimsFromAccount函数中分配它们。
我可以看到requestedClaims进入了MembershipRebootUserService类中的GetProfileDataAsync()函数,如果我悬停在GetClaimsFromAccount中的TAccount实例上,我可以看到出现在CustomUser动态代理中的Firstname、Lastname等属性,但在我的一生中,我无法解决如何访问它们并将它们复制到索赔集合中?
更多信息:
我怀疑问题就在于这句话:
claims.AddRange(userAccountService.MapClaims(account));看起来,这应该是将用户帐户属性转换为索赔,但我没有得到任何回报。
发布于 2015-06-17 11:48:55
据我所知,它的工作原理是向Scope对象中添加一个选项,以返回用户的所有声明。IncludeAllClaimsForUser是关键属性。
例如:
new Scope
{
Enabled = true,
Name = "roles",
Type = ScopeType.Identity,
IncludeAllClaimsForUser = true,
Claims = new List<ScopeClaim>
{
new ScopeClaim("role")
}
}我的请求还包括role属性。这收回了用户对我的所有要求。我的例子是Implicit流。
https://stackoverflow.com/questions/30592595
复制相似问题