2017-09-06 9 views
0

ASP.NET Core Web APIでJWTを実装しようとしています。 JwtBearerのバージョン1.1.2では、私は私のStartup.csファイルにこのコードを持っている:ASP.NETコア - JwtBearer 2.0.0

public void ConfigureServices(IServiceCollection services) 
{ 
    ... 

    services.Configure<JwtSettings>(Configuration.GetSection("jwt")); 

} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
{ 
    ... 
    var jwtSettings = app.ApplicationServices.GetService<JwtSettings>(); 
    app.UseJwtBearerAuthentication(new JwtBearerOptions 
    { 
      AutomaticAuthenticate = true, 
      TokenValidationParameters = new TokenValidationParameters 
      { 
       ValidIssuer = jwtSettings.Issuer; // "http://localhost:5000" 
       ValidateAudience = false, 
       IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Key)) // some secret Key 
      } 
    }); 

    app.UseMvc(); 
} 

このコードはJwtBearer 2.0.0に見える必要がありますどのように?

私はこのように、このパッケージをインストール:

2.0.0

DOTNETは、パッケージMicrosoft.AspNetCore.Authentication.JwtBearer

マイ.NET Coreバージョンを追加

答えて

0

トランスに上記のコードに基づいてあなたは以下のようにリファクタリングする必要があります。あなたの要件に合わせて調整してください。これは、輸送中の迅速な回答です。

public void ConfigureServices(IServiceCollection services) 
{ 
    // ... 
    services.AddAuthentication(options => 
     { 
      options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; 
      options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; 
     }).AddJwtBearer(o => { 
      o.Audience = Configuration.GetSection("jwt:Audience").Value; 
      o.Authority = Configuration.GetSection("jwt:Authority").Value; 
      o.RequireHttpsMetadata = Configuration.GetValue<bool>("jwt:RequireHttps"); 
      o.Events = new JwtBearerEvents() 
      { 
       OnAuthenticationFailed = c => 
       { 
        c.NoResult(); 
        c.Response.StatusCode = 401; 
        return c.Response.WriteAsync("Invalid Token"); 
       } 
      }; 
     }); 
} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 
     // ... 
     app.UseAuthentication(); 
     // ... 
     app.UseMvc(); 
    } 
0

これはあなたのために働くことができます:

public void ConfigureServices(IServiceCollection services) 

{

 services.Configure<JwtSettings>(Configuration.GetSection("jwt")); 

     var provider = services.BuildServiceProvider();  

     var jwtSettings = provider.GetService<JwtSettings>(); 


     services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) 
      .AddJwtBearer(o => 
      {         
       o.TokenValidationParameters = new TokenValidationParameters 
       {       
        ValidateIssuer = jwtSettings.Issuer; 
        ValidateAudience = false, 
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Key)) // some secret Key 

       };     

      }); 




} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
{ 
.... 

    app.UseAuthentication(); 
    app.UseMvc(); 

}