Я использую IdentityServer4 с проектом запуска React из ASP.NET Core 3.0, изначально созданным с помощью следующего кода из командной строки:
dotnet new react -o <output_directory_name> -au Individual
У меня нет проблем с аутентификацией локально или при запуске смой домен .azurewebsites.net, использующий https.
Однако, когда я переключаюсь на свой URL .COM, также размещенный в Azure, мой бэкэнд не аутентифицирует пользователя, хотя аутентификационный интерфейс реагирует. SSL настраивается с использованием LetsEncrypt и обновляется каждые 90 дней.
Следующий метод на контроллере API возвращает Unauthorized (), поскольку пользователь не прошел проверку подлинности только на моем URL-адресе .COM:
[Authorize]
[HttpGet("roles")]
public async Task<ActionResult> GetRoleAndBuilding() {
var userId = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value;
var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == userId);
var roles = await _userManager.GetRolesAsync(user);
var BuildingId = user.BuildingID ?? 0;
return Json(new { roles = roles, userId = userId, buildingID = BuildingId, });
}
User.Identity.IsAuthenticated возвращает false.
Я пытаюсь сделать все вызовы через .azurewebsites.net, включив CORS на identityserver4 при запуске, но это постыдный хак, и я уверен, что есть лучшее решение.
Буду крайне признателен за любые советы о том, что может быть причиной этого и потенциальных решений, сайт работает и перенаправление на azurewebsites.net вызывает неловкость.