0

我有一个 IdentityServer 设置只有一个混合流客户端,它为AllowedScopes设置“all_claims”。在另一台计算机上,我有一个连接到 IdSvr 以登录用户的 MVC 应用程序。它还为 IdMgr 设置绑定。我可以毫无问题地登录到主应用程序和 IdMgr。同样在用户登录后的主应用程序中,我按预期获得了所有声明,但在 IdMgr 中没有。/admin

我正在尝试根据声明在 IdMgr 中添加一些自定义逻辑。但是当我进入Thread.CurrentPrincipal任何 IdMgr 控制器时,它是空的!我得到的只是一个只有角色声明的ClaimsPrincipal对象。它还有一个具有以下属性的ClaimsIdentity对象:

AuthenticationType: "Bearer"
IsAuthenticated: true
NameClaimType: "name"
RoleClaimType: "role"

其他一切都是空的。甚至没有用户的名称或 ID。为什么会这样,我怎样才能在 IdentityManager 中获得所有声明?

要重现这一点,只需检查System.Threading.Thread.CurrentPrincipal.GetUsersAsyncUsersController

GitHub 上此问题的链接

4

2 回答 2

0

在身份管理器范围内尝试IncludeAllClaimsForUser = true

            new Scope{
                Name = IdentityManager.Constants.IdMgrScope,
                DisplayName = "IdentityManager",
                Description = "Authorization for IdentityManager",
                Type = ScopeType.Identity,
                IncludeAllClaimsForUser = true
于 2016-03-26T11:27:36.390 回答
-1

如果您想要 IdMgr 的自定义声明,那么我建议您在管道中进行声明转换。

于 2016-03-25T21:35:09.003 回答