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, я бы посоветовал вам выполнить преобразование утверждений в своем конвейере.