Отвечать на JWT неверно Аутентификация Asp.Net Core Web Api - PullRequest
0 голосов
/ 01 февраля 2019

Я применил учебник и создал одно приложение аутентификации основного веб-API asp.net.

Все отлично и работает отлично, но если я передаю неверный ключ авторизации, он ничего не возвращает.

Я попытался выполнить приведенный ниже код для проверки, но не получил делегат контекста.

x.Events.OnChallenge = context =>
                {
                    // Skip the default logic.
                    context.HandleResponse();

                    var payload = new JObject
                    {
                        ["error"] = context.Error,
                        ["error_description"] = context.ErrorDescription,
                        ["error_uri"] = context.ErrorUri
                    };

                    return context.Response.WriteAsync(payload.ToString());
                };

Я также хочу установить пользовательский код возврата ошибки для неправильной авторизации, поэтому любая помощь будет оценена.

Заранее спасибо.

Мой код службы конфигурации:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            // configure strongly typed settings objects
            var appSettingsSection = Configuration.GetSection("AppSettings");
            services.Configure<AppSettings>(appSettingsSection);

            // configure jwt authentication
            var appSettings = appSettingsSection.Get<AppSettings>();
            var key = Encoding.ASCII.GetBytes(appSettings.Secret);
            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })

            .AddJwtBearer(x =>
            {
                x.RequireHttpsMetadata = false;
                x.SaveToken = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(key),
                    ValidateIssuer = false,
                    ValidateAudience = false
                };
            });

            // configure DI for application services
            services.AddScoped<IUserService, UserService>();
        }

1 Ответ

0 голосов
/ 01 февраля 2019

Это не будет работать, поскольку в файле startup.cs вы бы использовали

app.UseJwtBearerAuthentication(new JwtBearerOptions()
{//other stuff}

, который работает с аннотацией данных [Authorize] в ваших методах и одновременно только тогда, когда передан действительный токен.

Позже вы можете извлекать претензии и выполнять проверку на

HttpContext.User.Identity as ClaimsIdentity;

. Вы можете проверить это ... если это поможет link1 и link2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...