2017-11-28 14 views
1

を持つユーザーマネージャの仕事を持つ私はこれと同じ問題を抱えている:あなたは追加しない場合ネットコア2.0のWeb APIは、アイデンティティ/ JWTを使用し、DI

.Net Core 2.0 Web API using JWT - Adding Identity breaks the JWT authentication

  services.AddIdentity<ApplicationUser, IdentityRole>() 
      .AddEntityFrameworkStores<IdentityDb>() 
      .AddDefaultTokenProviders(); 

あなたはユーザーマネージャを注入依存することはできません、とトークンコントローラまたは他のコントローラに、マネージャにサインインします。あなたはそれを修正する方法 任意のアイデア?

+0

の可能性のある重複した[JWTを使用してネットコア2.0のWeb API - アイデンティティは、JWTの認証を壊すの追加](https://stackoverflow.com/questions/46323844/net-core-2-0-web-api-using- JWT-追加・アイデンティティブレーク-JWT認証) – wdanda

答えて

0

私は私のコードは次のようになりますservices.AddIdentityCore に)(AddDefaultTokenProvidersを追加しました:

services.AddDbContext<IdentityDb>(options => 

options.UseSqlServer(Configuration.GetConnectionString( "DefaultConnectionを")));

 IdentityBuilder builder = services.AddIdentityCore<ApplicationUser> 
     (opt => 
     { 
      opt.Password.RequireDigit = true; 
      opt.Password.RequiredLength = 8; 
      opt.Password.RequireNonAlphanumeric = false; 
      opt.Password.RequireUppercase = true; 
      opt.Password.RequireLowercase = true; 
     } 
     ).AddDefaultTokenProviders(); 
     builder = new IdentityBuilder(builder.UserType, typeof(IdentityRole), builder.Services); 
     builder 
      .AddEntityFrameworkStores<IdentityDb>(); 
     //.AddDefaultTokenProviders(); 

     builder.AddRoleValidator<RoleValidator<IdentityRole>>(); 
     builder.AddRoleManager<RoleManager<IdentityRole>>(); 
     builder.AddSignInManager<SignInManager<ApplicationUser>>(); 

     services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) 
       .AddJwtBearer(options => 
       { 
        options.TokenValidationParameters = new TokenValidationParameters 
        { 
         ValidateIssuer = true, 
         ValidateAudience = true, 
         ValidateLifetime = true, 
         ValidateIssuerSigningKey = true, 

         ValidIssuer = "WindowLink.Security.Bearer", 
         ValidAudience = "WindowLink.Security.Bearer", 
         IssuerSigningKey = JwtSecurityKey.Create("windowlink-secret-key") 
        }; 

        options.Events = new JwtBearerEvents 
        { 
         OnAuthenticationFailed = context => 
         { 
          Console.WriteLine("OnAuthenticationFailed: " + context.Exception.Message); 
          return Task.CompletedTask; 
         }, 
         OnTokenValidated = context => 
         { 
          Console.WriteLine("OnTokenValidated: " + context.SecurityToken); 
          return Task.CompletedTask; 
         } 
        }; 
       }); 

     services.AddAuthorization(options => 
     { 
      options.AddPolicy("Member", 
       policy => policy.RequireClaim("MembershipId")); 
     }); 

     services.AddMvc(); 

これは私のトリックでした。

質問は今、閉じることができます。

関連する問題