private static bool AddGithubProvider(AuthenticationBuilder authBuilder,
                                       AuthConfigSection.AuthProvider provider)
 {
     if (provider?.Name?.ToLower() != "github")
     {
         return(false);
     }
     authBuilder.AddOAuth(provider.Name, options =>
     {
         options.ClientId                = provider.ClientId;
         options.ClientSecret            = provider.ClientSecret;
         options.CallbackPath            = new PathString(provider.CallbackPath);
         options.AuthorizationEndpoint   = "https://github.com/login/oauth/authorize";
         options.TokenEndpoint           = "https://github.com/login/oauth/access_token";
         options.UserInformationEndpoint = "https://api.github.com/user";
         options.Scope.Add("user:email");
         options.SaveTokens = true;
         options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id");
         options.ClaimActions.MapJsonKey(ClaimTypes.Email, "email");
         options.Events = new OAuthEvents
         {
             OnCreatingTicket = async context =>
             {
                 var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
                 request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                 request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);
                 var response = await context.Backchannel.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, context.HttpContext.RequestAborted);
                 response.EnsureSuccessStatusCode();
                 var json = JsonDocument.Parse(await response.Content.ReadAsStringAsync());
                 context.RunClaimActions(json.RootElement);
             }
         };
     });
     return(true);
 }
        private static bool AddGoogleProvider(AuthenticationBuilder authBuilder,
                                              AuthConfigSection.AuthProvider provider)
        {
            if (provider?.Name?.ToLower() != "google")
            {
                return(false);
            }

            authBuilder.AddGoogle(options =>
            {
                options.ClientId     = provider.ClientId;
                options.ClientSecret = provider.ClientSecret;
                options.CallbackPath = new PathString(provider.CallbackPath ?? $"/signin-{provider.Name}");
            });
            return(true);
        }