Как уже упоминалось в комментарии к @d_f, это неправильный подход.
Правильный подход для этого - передача идентификатора клиента от клиента в IdentityServer с использованием события: OnRedirectToIdentityProvider
Пример
options.Events.OnRedirectToIdentityProvider = (loginRedirectContext) =>
{
var servicesProvider = loginRedirectContext.HttpContext.RequestServices;
var tenantInfo = servicesProvider.GetRequiredService<IRequestContextTenantInfo>();
loginRedirectContext.ProtocolMessage.SetParameter("tenantId", tenantInfo.Id);
return Task.FromResult(0);
};
В Identity Server Вы можете прочитать его в методе Login Login следующим образом:
var _interaction = context.RequestServices.GetRequiredService<IIdentityServerInteractionService>();
var returnUrl = context.Request.Query["ReturnUrl"].ToString();
var authContext = await _interaction.GetAuthorizationContextAsync(returnUrl);
tenantId = authContext.Parameters["tenantid"];
Теперь, основываясь на идентификаторе арендатора, вы должны знать, к какому арендатору нужно подключиться, чтобы проверить процесс входа в систему.
Хорошей практикой также является внедрение специального пользовательского промежуточного программного обеспечения в IdentityServer4 для обработки многопользовательской среды на ранней стадии в конвейере запросов.
Пример в методе Configure при запуске:
app.UseMultiTenancy();
app.UseIdentityServer();
и метод UseMultiTenancy () будут считывать параметр клиента, отправленный клиентом.