Где я могу указать в TokenValidationParameters, что алгоритм в токене JWT должен соответствовать HS256? - PullRequest
0 голосов
/ 21 ноября 2018

Я использую AspNet Core для создания веб-API и токенов JWT для аутентификации пользователей.

Где в TokenValidationParameters можно указать, что токен alg должен совпадать с HS256 (и никогда none)?

    services
        .AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(cfg =>
        {
            cfg.RequireHttpsMetadata = false;
            cfg.SaveToken = true;
            string jwtIssuer = configuration["JwtIssuer"];
            SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtKey"]));
            cfg.TokenValidationParameters = new TokenValidationParameters
            {
                ValidIssuer = jwtIssuer,
                ValidAudience = jwtIssuer,
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = securityKey,
                ClockSkew = TimeSpan.Zero
            };
        });

Ибиблиотека по умолчанию отклоняет входящие токены с alg, установленным на none?

1 Ответ

0 голосов
/ 09 мая 2019

Согласно комментарию по умолчанию промежуточное ПО не допускает "alg": "none".Кажется, это связано с эксплойтом, упомянутым в вопросе .

Относительно отказа: я попытался передать токен с помощью "alg": "none" и получил invalid_token в ответе (Microsoft.AspNetCore.Authentication.JwtBearer 2.1.0).

Кстати, спецификация требует реализации алгоритмов HS256 и "none".

...