Как авторизовать токен на предъявителя с asp. net core 3.1 mvc - PullRequest
0 голосов
/ 28 марта 2020

В моем проекте у меня проблемы с аутентификацией пользователей по заголовку, так как я не использую WebApi. Итак, у меня есть вся служба токенов WJT, которая запускает и генерирует токен пользователя с ролями и тому подобным. Проблема в том, что когда я добавляю токен в заголовки, начальная страница не загружается.

app.Use(async (context, next) =>
        {
            var tk = JsonConvert.DeserializeObject<UserModel>(context.Session.GetString("user"));
            if (!String.IsNullOrEmpty(tk.Token))
            {
                context.Request.Headers.Add("Authorization", "Bearer " + tk.Token);
            }

            await next();
        });

Инициализатор Jwt:

 var key = Encoding.ASCII.GetBytes(Settings.Secret);
        services.AddAuthentication(x =>
        {
            x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(a =>
        {
            a.RequireHttpsMetadata = false;
            a.SaveToken = true;
            a.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(key),
                ValidateIssuer = false,
                ValidateAudience = false
            };
        });

Настройка:

app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseSession();
        app.Use(async (context, next) =>
        {
            var tk = JsonConvert.DeserializeObject<UserModel>(context.Session.GetString("user"));
            if (!String.IsNullOrEmpty(tk.Token))
            {
                context.Request.Headers.Add("Authorization", "Bearer " + tk.Token);
            }

            await next();
        });
        app.UseRouting();
        app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
        app.UseAuthorization();
        app.UseAuthentication();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Login}/{id?}");
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...