Как получить токен доступа в ядре ASP.NET без запуска рекурсии промежуточного программного обеспечения в jwtbearereventsC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как получить токен доступа в ядре ASP.NET без запуска рекурсии промежуточного программного обеспечения в jwtbearerevents

Сообщение Anonymous »

Я строю основной 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»