Справочная информация: Я запускаю интеграционные тесты внутри. NET Базового веб-API, который использует Auth0 для авторизации на моих конечных точках. Мои токены, возвращаемые из Auth0, содержат «недопустимую подпись», когда я вставляю их в верификатор JWT.io.
У меня возникают проблемы с пониманием того, в какой момент моего потока авторизации мой токен подписывается, кто его подписывает и как он подписывается.
Я запустил новый API разработки в Auth0 («My Dev API»), который использует HS256 Signing Al go для подписи моих токенов. Насколько я понимаю, в HS256 есть один секретный ключ, который использует знаковые токены (секрет подписи), и поток между компьютерами выглядит следующим образом:
Я отправляю некоторые учетные данные в Auth0, например:
clientID: exampleID
clientSecret: exampleSecret
audience: https://myaudience.com
grant_type: client_credentials
Auth0 отправляет мне обратно токен доступа:
access_token: exampleToken1234
Когда я вставляю этот токен в JWT.io, мне говорят, что токен имеет недопустимую подпись.
В моем. NET приложении у меня есть какая-то настройка, которая выполняет какую-то настройку:
static void AddAuthentication(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = auth0Config.Domain,
ValidAudience = auth0Config.Audience,
IssuerSigningKey = new
SymmetricSecurityKey(Encoding.UTF8.GetBytes(auth0Config.SigningSecret))
};
});
}
Может кто-нибудь объяснить, должен ли я добавить код для подписи этого токена, если он уже получен подписано (и если да, то почему JWT.io сообщает мне, что есть недопустимая подпись) и что на самом деле делает приведенная выше конфигурация?
Кроме того, необходимо ли создавать автономный Dev API или я могу отправлять запросы на авторизацию к готовому интерфейсу управления api?
Заранее спасибо!