Используя пользовательское промежуточное ПО, я смог обновить запрос до авторизации:
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;
namespace Stackoverflow.Example.Security.Middleware
{
public class BearerTokenFromQueryToHeaderMiddleware
{
private readonly RequestDelegate _next;
public BearerTokenFromQueryToHeaderMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
var token = context.Request.Query["access_token"];
if (!string.IsNullOrWhiteSpace(token))
{
context.Request.Headers.Add("Authorization", $"Bearer {token}");
}
await _next(context);
}
}
}
Я не пытался заставить это работать с платформой OpenID, но я тестировал, используя собственную политику. Пока это регистрируется раньше, чем аутентификация, это промежуточное программное обеспечение должно выполняться до того, как инфраструктура будет искать токен в заголовке.
Я буду работать над POC с AAD в эти выходные, но я не хотел, чтобы вы ждали возможного решения.
~ Приветствия