public static IApplicationBuilder UseTokenAuthentication(this IApplicationBuilder app, IAuthOptionsProvider authOptionsProvider) { var signingCredentials = authOptionsProvider.SigningCredentials; app.UseSimpleTokenProvider(new TokenProviderOptions { Path = "/api/token", Audience = "ExampleAudience", Issuer = "ExampleIssuer", Expiration = authOptionsProvider.Expiration, SigningCredentials = signingCredentials }); var tokenValidationParameters = new TokenValidationParameters { // The signing key must match! ValidateIssuerSigningKey = true, IssuerSigningKey = authOptionsProvider.SigningKey, // Validate the JWT Issuer (iss) claim ValidateIssuer = true, ValidIssuer = authOptionsProvider.ValidIssuer, // Validate the JWT Audience (aud) claim ValidateAudience = true, ValidAudience = authOptionsProvider.ValidAudience, // Validate the token expiry ValidateLifetime = true, // If you want to allow a certain amount of clock drift, set that here: ClockSkew = TimeSpan.Zero }; app.UseJwtBearerAuthentication(new JwtBearerOptions { AutomaticAuthenticate = true, AutomaticChallenge = true, TokenValidationParameters = tokenValidationParameters }); app.UseCookieAuthentication(new CookieAuthenticationOptions { AutomaticAuthenticate = true, AutomaticChallenge = true, AuthenticationScheme = "Cookie", CookieName = "access_token", TicketDataFormat = new CustomJwtDataFormat( SecurityAlgorithms.HmacSha256, tokenValidationParameters) }); return(app); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public async void Configure( IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, ApplicationDbContext dbContext, UserManager <ApplicationUser> userManager, IOptions <AppSettings> settings, IAuthOptionsProvider authOptionsProvider) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); app.UseCors(builder => builder .WithOrigins(settings.Value.CorsAllowedOrigin) .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials()); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseIdentity(); // Token Auth Configuration app.UseTokenAuthentication(authOptionsProvider); app.UseMvc(); await DbInitializer.Initialize(dbContext, userManager); }