MembershipReboot 使用 IdentityServer v3
MembershipReboot with IdentityServer v3
我在结合 Thinktecture IdentityServer 从 MembershipReboot 中提取 UserAccount 属性时遇到问题。我有 up 和 运行 使用示例存储库:https://github.com/identityserver/IdentityServer3.MembershipReboot
当我在隐式授权流程中请求 "openid profile" 范围时,我遗漏了很多用户帐户字段,例如 "given_name, middle_name" 等来自 id_token 和来自用户信息端点。我理解这是因为它们需要在 GetClaimsFromAccount 函数中分配。
我可以看到请求的声明进入 MembershipRebootUserService 中的 GetProfileDataAsync() 函数 class 如果我将鼠标悬停在 GetClaimsFromAccount 中的 TAccount 实例上,我可以看到 CustomUser 中出现的名字、姓氏等属性动态代理,但我终生无法弄清楚如何访问它们并将它们复制到声明集合中?
更多信息:
我怀疑问题出在这一行:
claims.AddRange(userAccountService.MapClaims(account));
看起来这应该是将用户帐户属性转换为声明,但我没有得到任何回复。
我理解它的工作方式是您将一个选项添加到您的 Scope 对象以 return 用户的所有声明。 IncludeAllClaimsForUser 是关键 属性。
例如
new Scope
{
Enabled = true,
Name = "roles",
Type = ScopeType.Identity,
IncludeAllClaimsForUser = true,
Claims = new List<ScopeClaim>
{
new ScopeClaim("role")
}
}
我的请求也包括 role
属性。这为我撤回了 MR 对用户的所有声明。我的例子是 Implicit
顺便说一句。
我在结合 Thinktecture IdentityServer 从 MembershipReboot 中提取 UserAccount 属性时遇到问题。我有 up 和 运行 使用示例存储库:https://github.com/identityserver/IdentityServer3.MembershipReboot
当我在隐式授权流程中请求 "openid profile" 范围时,我遗漏了很多用户帐户字段,例如 "given_name, middle_name" 等来自 id_token 和来自用户信息端点。我理解这是因为它们需要在 GetClaimsFromAccount 函数中分配。
我可以看到请求的声明进入 MembershipRebootUserService 中的 GetProfileDataAsync() 函数 class 如果我将鼠标悬停在 GetClaimsFromAccount 中的 TAccount 实例上,我可以看到 CustomUser 中出现的名字、姓氏等属性动态代理,但我终生无法弄清楚如何访问它们并将它们复制到声明集合中?
更多信息:
我怀疑问题出在这一行:
claims.AddRange(userAccountService.MapClaims(account));
看起来这应该是将用户帐户属性转换为声明,但我没有得到任何回复。
我理解它的工作方式是您将一个选项添加到您的 Scope 对象以 return 用户的所有声明。 IncludeAllClaimsForUser 是关键 属性。
例如
new Scope
{
Enabled = true,
Name = "roles",
Type = ScopeType.Identity,
IncludeAllClaimsForUser = true,
Claims = new List<ScopeClaim>
{
new ScopeClaim("role")
}
}
我的请求也包括 role
属性。这为我撤回了 MR 对用户的所有声明。我的例子是 Implicit
顺便说一句。