Я столкнулся со следующей проблемой при размещении веб-приложения, созданного с asp. net core 3.1 и React.
Мы использовали шаблон Visual Studio по умолчанию для React. ASP. NET Идентификация используется для аутентификации и авторизации.
Аутентификация и авторизация работают должным образом, пока мы размещаем веб-сайт с сертификатом SSL, выданным для одного домена или CN. (например, example.com)
Если мы размещаем веб-сайт с SSL с несколькими CN (например, example.com, sub1.example.com, sub2.example.com), отлично работает для любого ОДИН из доменов. Для остальных доменов мы получаем следующее поведение:
Логин работает как положено. Путь / connect / token выдает действительный токен. После входа в систему, когда мы пытаемся вызвать любой API-интерфейс (все API-адреса размещаются в / api route), мы получаем 401 несанкционированную ошибку. Описание ошибки в заголовке:
WWW-Authenticate: ошибка канала-носителя = "invalid_token", error_description = "Эмитент" https://sub1.example.com 'недействителен ".
Я также попытался проанализировать выданный токен на jwt.io. Поле iss (эмитент) - https://sub1.example.com, которое точно соответствует описанию ошибки. Я не могу понять, почему механизм идентификации отказывается идентифицировать эмитента, для которого он выдал токен.
Здесь приведен соответствующий фрагмент из файла Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentityServer()
.AddApiAuthorization<ApplicationUser, ApplicationDbContext>();
services.AddAuthentication()
.AddIdentityServerJwt();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseAuthentication();
app.UseIdentityServer();
app.UseAuthorization();
}
Есть идеи?