проблема с аутентификацией JWT в. net ядро ​​3 - PullRequest
0 голосов
/ 06 марта 2020

У меня есть веб-приложение, разработанное на. net ядре 3.1, я использую CookiAuthentication и Jwt Authentication Оба Jwt для моего API-интерфейса и Cookiauthentication для моих форм, он отлично работает на локальном, но когда я публикую sh мой сайт на сервере аутентификация jwt не работает, мой сайт размещен на azure Я не знаю, может ли это вызвать эту проблему или нет мои коды запуска:

public void ConfigureServices(IServiceCollection services)
    {
        var connection = Configuration.GetConnectionString("LocalDB");
        services.AddDbContext<Models.CoreDBContext>(options => options.UseSqlServer(connection));

        services.Configure<MySettings>(Configuration.GetSection("MySettings"));
        services.AddControllersWithViews().AddNewtonsoftJson();
        services.AddMvc();
        services.AddMvcCore().AddAuthorization();
        services.AddRazorPages().AddRazorRuntimeCompilation();

        services.AddIdentity<Models.AspNetUser, IdentityRole>()
                 .AddEntityFrameworkStores<Models.CoreDBContext>()
                 .AddDefaultTokenProviders();

        services.Configure<IdentityOptions>(options =>
        {
            // Password settings.
            options.Password.RequireDigit = false;
            options.Password.RequireLowercase = false;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = false;
            options.Password.RequiredLength = 6;
            options.Password.RequiredUniqueChars = 1;

            // Lockout settings.
            options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
            options.Lockout.MaxFailedAccessAttempts = 5;
            options.Lockout.AllowedForNewUsers = true;

            // AspNetUser settings.
            options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
            options.User.RequireUniqueEmail = false;

        });

        services.ConfigureApplicationCookie(options =>
        {
            options.AccessDeniedPath = "/Account/AccessDenied";
            options.Cookie.Name = "YourAppCookieName";
            options.Cookie.HttpOnly = true;
            options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
            options.LoginPath = "/Account/Login";
            options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
            options.SlidingExpiration = true;
        });

        services.AddDistributedMemoryCache();
        services.AddSession(options =>
        {
            options.IdleTimeout = TimeSpan.FromMinutes(20);
            options.Cookie.HttpOnly = true;
            options.Cookie.IsEssential = true;
        });

        services.AddMvc().AddNewtonsoftJson(opt =>
         {
             opt.SerializerSettings.ContractResolver = new DefaultContractResolver();
         });

        services
            .AddAuthentication(

            )
            .AddCookie(cng =>
            {
                cng.LoginPath = "/User/Login";
                cng.AccessDeniedPath = "/User/AccessDenied";
            })
            .AddJwtBearer(options =>
            {
                options.SaveToken = true;
                options.RequireHttpsMetadata = false;
                options.TokenValidationParameters = new TokenValidationParameters()
                {
                     ValidateIssuerSigningKey = true,
                    ValidateLifetime = true,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Enums.JwtBarearKey)),
                };
            });
    }
...