Я строю основной API ASP.NET, который использует Azure Entra ID (ранее Azure AD) для аутентификации. Мне нужно обработать токенвалидированное событие в jwtbearerevents, чтобы обрабатывать сценарии избыточных лиц групповых. Для этого я использую сервис, которая пытается извлечь токен доступа пользователя из HTTPContext. Тем не менее, моя текущая реализация вызывает рекурсию, потому что извлечение токена, кажется, снова вызывает промежуточный трубопровод.public class JwtBearerEventsProcessor(IGroupOverageService groupOverageService) : JwtBearerEvents
{
public override async Task TokenValidated(TokenValidatedContext context)
{
if (context != null)
{
// Handle group overage (calls a method to process claims)
await groupOverageService.ProcessAnyGroupOverage(context);
}
await Task.CompletedTask;
}
}
Метод ProcessAngyGroupoVerage пытается получить токен доступа с использованием этого кода:
public async Task GetAccessToken()
{
if (_httpContextAccessor.HttpContext == null)
{
throw new InvalidOperationException("HttpContext not initialized!");
}
//FIXME: This call triggers TokenValidated which leads to recursion.
var accessToken = await _httpContextAccessor.HttpContext.GetTokenAsync("access_token");
if (string.IsNullOrWhiteSpace(accessToken))
{
throw new InvalidOperationException("Unable to get access token from HttpContext!");
}
return accessToken;
}
The tocken token необходим для запроса групп пользователя из Microsoft Graph через http.
проблема
вызов getTokencyncInc triggers triggard thenvalidated , приводящий к реконсурсу. /> Вопрос < /h1>
Как я могу безопасно извлечь токен доступа < /em> без запуска промежуточного трубопровода и не вызывая рекурсию? Есть ли еще один (лучший) способ обработки групповой переизбытки? < /P>
Любая помощь ценится. Спасибо! Этот подход работает, хотя он чувствует себя немного хакерским . Любые комментарии признаны.public class GroupOverageMiddleware(RequestDelegate next)
{
public async Task InvokeAsync(HttpContext context, IGroupOverageService groupOverageService)
{
await groupOverageService.ProcessAnyGroupOverage();
await next(context);
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ware-pipel
Как получить токен доступа в ядре ASP.NET без запуска рекурсии промежуточного программного обеспечения в jwtbearerevents ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Замените активатор промежуточного программного обеспечения в ASP.NET Core.
Anonymous » » в форуме C# - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Настройка промежуточного программного обеспечения для конкретного контроллера в ASP.NET Core
Anonymous » » в форуме C# - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-