Я установил приложение ядра (2.1) asp.net, используя удостоверение asp.net, и подключил Identity Server 4 в качестве промежуточного программного обеспечения для аутентификации.Это хорошо работает для локальных учетных записей, но сейчас я пытаюсь включить сторонних поставщиков логина, начиная с Google.Поэтому я добавил следующее к своему методу ConfigureServices:
services.AddAuthentication()
.AddGoogle("Google", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.ClientId = "numbershere.apps.googleusercontent.com";
options.ClientSecret = "my-secret";
});
И добавил леса проекта в проект, и появилась кнопка входа в Google.Если я щелкну по нему, я перенаправлюсь в Google, войду в систему и получу экран подтверждения, прежде чем вернуться в свое приложение.В этот момент выполняется OnGetCallbackAsync
из моего ExternalLoginModel
, который содержит вызов:
var info = await _signInManager.GetExternalLoginInfoAsync();
Однако информация всегда пуста после этого вызова, и поэтому пользователь просто перенаправляется обратно к логинустраница:
public async Task<IActionResult> OnGetCallbackAsync(string returnUrl = null, string remoteError = null)
{
returnUrl = returnUrl ?? Url.Content("~/");
if (remoteError != null)
{
ErrorMessage = $"Error from external provider: {remoteError}";
return RedirectToPage("./Login", new {ReturnUrl = returnUrl });
}
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
{
ErrorMessage = "Error loading external login information.";
return RedirectToPage("./Login", new { ReturnUrl = returnUrl });
}
}
Я читал об онлайн и даже следовал пунктам быстрого запуска Identity Server , но не вижу, что пропустил.
Кто-нибудь может посоветовать, что я не сделал / не настроил для этой работы?
Спасибо