代码之家  ›  专栏  ›  技术社区  ›  4est

JWT身份验证错误参数

  •  0
  • 4est  · 技术社区  · 6 年前

    我正在学习如何向我的WebAPI添加JWT令牌认证。我在里面做了这么多 Startup.cs :

    using Microsoft.AspNetCore.Authentication;
    using Microsoft.AspNetCore.Authentication.JwtBearer;
    ..
    ..
     public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
       if (env.IsDevelopment())
       {
        app.UseDeveloperExceptionPage();
       }
    
       app.UseJwtBearerAuthentication(new JwtBearerOptions
       {
         AutomaticAuthenticate = true,
    
         TokenValidationParameters = new TokenValidationParameters
         {
            ValidIssuer = "http://localhost:Port",
            ValidateAudience = false,
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("testPass"))
         }
       });
    
       app.UseMvc();
    }
    

    但我也有错误,比如:

    1. JwtBearerAppBuilderExtensions.UseJwtBearerAuthentication(IApplicationBuilder, JwtBearerOptions)' is obsolete: 'See https://go.microsoft.com/fwlink/?linkid=845470

    2. JwtBearerOptions' does not contain a definition for 'AutomaticAuthenticate'
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   haldo Steve Sheldon    6 年前

    你可以在 ConfigureServices 方法在 StartUp.cs .

      public void ConfigureServices(IServiceCollection services)
        {            
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(o =>
            {
                o.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidateAudience = false,
                    ValidateLifetime = false,
                    ValidateIssuerSigningKey = true,
    
                    ValidIssuer = "http://localhost:Port",
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("YourKey")) 
                };
            });
    
        // other configuration...
    }
    

    然后在 Configure 方法:

    app.UseAuthentication();
    
        2
  •  0
  •   user7885913    6 年前

    尝试在configureService中执行,而不是在configureService中执行,尝试类似的操作

    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
                };
            });
    

    它会起作用的!