Подключение IdentityServer4.AccessTokenValidation и ссылочных токенов с удостоверением ASP.NET Core

Я пытаюсь создать приложение Угловой 6, поддерживаемое серверной частью Веб-API ASP.NET. Приложение аутентифицирует пользователей по отдельному Сервер идентификации 4, который объединяет Azure AD, в конечном итоге возвращая ссылочный токен Предъявитель.

С точки зрения входа в систему и затем аутентификации (токена) все работает. Пользователь получает доступ к сайту, перенаправляется в Azure AD, входит в систему и перенаправляется обратно в приложение Angular 6. Для вызовов API токен вводится в заголовок, а промежуточное ПО для проверки подлинности ASP.NET Core проверяет токен и возвращает данные.

services
    .AddAuthentication(options => {
        options.DefaultScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
        options.DefaultAuthenticateScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
        options.DefaultSignInScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
    })
    .AddIdentityServerAuthentication(options => {
        options.Authority = AuthClient.SsoBaseUrl;
        options.RequireHttpsMetadata = false;
        options.ApiName = AuthClient.SsoClientName;
        options.ApiSecret = AuthClient.SsoClientSecret;
    });

Моя проблема в том, что я пытаюсь включить ASP.NET Core Identity, и я не уверен, где и как привязать claims principal, возвращенный через AddIdentityServerAuthentication.

В предыдущей версии (ASP.NET Framework 4.7) этого приложения мы использовали Ws-Federation, который перенаправлялся обратно на ExternalCallbackLogin() в AccountController, который выполнял обычный AuthenticationManager.GetExternalLoginInfoAsync(), затем SignInManager.ExternalSignInAsync(), а затем (если необходимо) AppUserManager.CreateAsync() и AppUserManager.AddLoginAsync().

Этот код в основном проверяет таблицу [AspNetUserLogins] на наличие ключа поставщика (из утверждений) для сопоставления с пользователем в таблице [AspNetUsers].

При переходе на IdentityServer4.AccessTokenValidation не могу понять, куда девать эту логику. Поскольку я использую ссылочные маркеры, не похоже, что JwtBearerEvents (в частности, событие OnTokenValidated) не возникает. На самом деле, нет выглядит так, как будто там находятся какие-либо события Introspection ... ??

Я пытался протестировать логику в тестовой конечной точке, которая вызывала вышеупомянутые методы «Менеджера» (технически он был обновлен для эквивалентных методов ASP.NET Core Identity), но это тоже не работает.

Например, самый первый вызов SignInManager.GetExternalLoginInfoAsync() возвращает null.

Что я делаю не так?

Возникла та же проблема. Переключение на ссылочные токены сработало отлично, но теперь мы пытаемся добавить утверждения к проверенной личности и не можем найти решение без события OnTokenValidated.

ZaChickster 13.05.2019 18:27

Используйте OAuth2IntrospectionEvents

Jesper1 23.04.2021 15:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
2
388
0

Другие вопросы по теме