Почему не работает авторизация через GitHub в ASP.NET Core 2.0

152
02 ноября 2019, 07:00

Есть проект на ASP.NET Core 2.0. Пытаюсь вручную (без внешних библиотек) сделать регистрацию через соц.сети. Пока работаю с гитхабом. Вот конфигурация сервисов из файла Startup.cs

services.AddOAuth("GitHub", options => {
  options.ClientId = Configuration["Auth:GitHub:ClientId"];
  options.ClientSecret = Configuration["Auth:GitHub:ClientSecret"];
  //Account/githubLogin2
  options.CallbackPath = new PathString(Configuration["Auth:GitHub:CallbackPath"]);
  options.AuthorizationEndpoint = Configuration["Auth:GitHub:AuthorizationEndpoint"];
  options.TokenEndpoint = Configuration["Auth:GitHub:TokenEndpoint"];
  options.UserInformationEndpoint = Configuration["Auth:GitHub:UserInformationEndpoint"];
  options.SaveTokens = true;
  options.ClaimActions.Clear();
  options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id");
  options.ClaimActions.MapJsonKey(ClaimTypes.Name, "name");
  options.ClaimActions.MapJsonKey("urn:github:login", "login");
  options.ClaimActions.MapJsonKey("urn:github:url", "html_url");
  options.ClaimActions.MapJsonKey("urn:github:avatar", "avatar_url");
 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 user = JObject.Parse(await response.Content.ReadAsStringAsync());
         context.RunClaimActions(user);
     }
};

});

При нажатии на кнопку у меня выполняется следующий код:

await HttpContext.ChallengeAsync("GitHub", new AuthenticationProperties() { RedirectUri = @"http://localhost:56666/account/githubLogin2" });

И вроде всё работает нормально. Я нажимаю на кнопку, появляется окно с просьбой ввести логин и пароль, я ввожу, браузер редирект на http://localhost:56666/account/githubLogin2, но там я вижу это: Что не так? В какую сторону копать?

READ ALSO
Enum to string помогите

Enum to string помогите

Как мне перечисленные Enum-ы вывести как текст (Enum-ы в данном случае FlagList )?

130
Не получается запустить Php Unit

Не получается запустить Php Unit

OpenServerУстановлен Composer, PhpUnit

126
Обновление статуса вебхука

Обновление статуса вебхука

Помогите разобраться с кодом PHPВыдает ответ - 405

146
Перемнные окружения и пароли БД

Перемнные окружения и пароли БД

Где то давно слышал, что в php безопаснее хранить логин и пароль от базы данных в переменных окружения ($_ENV), а не в самом php скриптеДействительно...

124