Ejemplo n.º 1
0
 public HttpClientFactory(IHttpMessageHandlerAccessor httpMessageHandlerAccessor)
 {
     _httpMessageHandler = httpMessageHandlerAccessor.Value;
     if (_httpClients == null)
     {
         _httpClients = new ConcurrentDictionary <Uri, HttpClient>();
     }
 }
        public static void UseAuth0Tokens(
            this IApplicationBuilder app,
            IOptions <Auth0Settings> auth0SettingsAccessor,
            IHttpMessageHandlerAccessor httpMessageHandlerAccessor,
            ILoggerFactory loggerFactory)
        {
            var logger      = loggerFactory.CreateLogger("Auth0");
            var appSettings = auth0SettingsAccessor.Value;

            var jwtOptions = new JwtBearerOptions
            {
                Authority                 = appSettings.Auth0Domain,
                AutomaticAuthenticate     = true,
                TokenValidationParameters = new TokenValidationParameters
                {
                    ValidIssuer    = appSettings.Auth0Domain,
                    ValidAudiences = new List <string> {
                        appSettings.Auth0ClientId
                    },
                    ValidateLifetime      = true,
                    RequireExpirationTime = true,
                    RequireSignedTokens   = true,
                    ClockSkew             = new TimeSpan(0, 10, 0)
                },
                Events = new JwtBearerEvents
                {
                    OnChallenge = context =>
                    {
                        logger.LogError("OnChallenge error", context.Error, context.ErrorDescription);
                        return(Task.FromResult(0));
                    },
                    OnAuthenticationFailed = context =>
                    {
                        logger.LogError("OnAuthenticationFailed", context.Exception);
                        return(Task.FromResult(0));
                    },
                    OnTokenValidated = context =>
                    {
                        var claimsIdentity = context.Ticket.Principal.Identity as ClaimsIdentity;
                        claimsIdentity?.AddClaim(new Claim("id_token",
                                                           context.Request.Headers["Authorization"][0].Substring(
                                                               context.Ticket.AuthenticationScheme.Length + 1)));

                        return(Task.FromResult(0));
                    }
                }
            };

            if (httpMessageHandlerAccessor.HandlerDefined)
            {
                jwtOptions.BackchannelHttpHandler = httpMessageHandlerAccessor.Value;
            }

            app.UseJwtBearerAuthentication(jwtOptions);
        }
Ejemplo n.º 3
0
        public void Configure(
            IApplicationBuilder app,
            IHostingEnvironment env,
            ILoggerFactory loggerFactory,
            IOptions <Auth0Settings> auth0SettingsAccessor,
            IHttpMessageHandlerAccessor httpMessageHandlerAccessor)
        {
            loggerFactory.AddConsole();
            loggerFactory.AddDebug();
            loggerFactory.AddSerilog();

            app.UseAuth0Tokens(auth0SettingsAccessor, httpMessageHandlerAccessor, loggerFactory);
            app.UseMvc();
        }