IdentityManager не получает все претензии

У меня есть IdentityServer, настроенный только с одним клиентом гибридного потока, который устанавливает "all_claims" для AllowedScopes. На другом компьютере у меня есть приложение MVC, которое подключается к IdSvr для входа в систему пользователя. Это также устанавливает /admin привязка для IdMgr. Я могу без проблем войти в основное приложение и в IdMgr. Также в основном приложении после входа пользователя я получаю все заявки, как и ожидалось, но не в IdMgr.

Я пытаюсь добавить пользовательскую логику в IdMgr на основе утверждений. Но когда я получаю Thread.CurrentPrincipal в любом контроллере IdMgr он пуст! Все, что я получаю, это объект ClaimsPrincipal с утверждениями только о роли. Он также имеет один объект ClaimsIdentity со следующими свойствами:

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

а все остальное - ноль. Там нет даже имени или идентификатора для пользователя. Почему это так, и как я могу получить все претензии в IdentityManager?

Чтобы воспроизвести это, просто осмотрите System.Threading.Thread.CurrentPrincipal в GetUsersAsync метод в UsersController,

Ссылка на этот вопрос на GitHub

2 ответа

Попробуйте включить IncludeAllClaimsForUser = true в области видимости диспетчера

            new Scope{
                Name = IdentityManager.Constants.IdMgrScope,
                DisplayName = "IdentityManager",
                Description = "Authorization for IdentityManager",
                Type = ScopeType.Identity,
                IncludeAllClaimsForUser = true

Если вам нужны пользовательские утверждения для IdMgr, я бы посоветовал вам выполнить преобразование утверждений в своем конвейере.