Ну, наконец, после дополнительных исследований я, наконец, обнаружил, что пользовательский AuthorizationHandler
является более подходящим решением, поскольку предполагается использовать пользовательские атрибуты Authorize
, которые не предлагаются в Asp.Net Core.
Его было просто настроить, и я могу извлечь свой токен Bearer
из заголовка для дальнейшей авторизации с помощью OAuth
.
. Вот мой подход:
public class CustomAuthorizationHandler: IAuthorizationHandler
{
public Task HandleAsync(AuthorizationHandlerContext context)
{
var authFilterCtx = (Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext)context.Resource;
string authHeader = authFilterCtx.HttpContext.Request.Headers["Authorization"];
if (authHeader != null && authHeader.Contains("Bearer"))
{
var token = authHeader.Replace("Bearer", "");
// Now token can be used for further authorization
}
throw new NotImplementedException();
}
}
Наконец, регистрация обработчика в Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IAuthorizationHandler, CustomAuthorizationHandler>();
}