У меня есть Asp Net Core API без какой-либо реализации контроллера.Клиент (реализация Auth0) передает токен JWT (RS256 ALG), который мне нужно проверить, действительна ли подпись или нет.Я просмотрел официальную документацию Auth0, в которой предлагается реализовать JwtBearer и настроить приложение на UseAuthentication в конфигурации запуска
Microsoft.AspNetCore.Authentication.JwtBearer
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// 1. Add Authentication Services
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.Authority = "https://myapi.auth0.com/";
options.Audience = "API/Endpoint";
});
}
Как упомянуто выше, в этом API нет контроллера, я не могу украсить метод с помощью Authorize attrubute, поэтому у меня остается возможность проверить эту подпись вручную.По этой причине я прошел через сообщения о переполнении стека, где люди упоминали о различных подходах, таких как использование
System.IdentityModel.Tokens.Jwt
, в то время как другиев противоположность этому и предложил использовать низкоуровневую реализацию и т. д. Я пробовал пару, но пока безуспешно.
Допустим, следующий метод является точкой входа API, который получает токен JWT.Пожалуйста, кто-нибудь подскажет, что мне нужно сделать, чтобы проверить подпись вручную
public Task InvokeAsync(HttpContext context)
{
var accessToken = context.Request.Headers["Authorization"];
// Here I wan't to verify the signature?
// This token has RS256 alg
}
Ниже приведен результат декодирования JWT
![enter image description here](https://i.stack.imgur.com/qd9iM.png)