Exemple #1
0
        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);
        }