Отказ от ответственности: у меня есть для вас ответ, но в конце этого ответа также есть предупреждение.
Сначала убедитесь, что вы настроили *.example.com
как собственный поддомен в App Engine, и*.example.com
настроен как CNAME
с вашим провайдером DNS. Это направит все запросы к TENANT.example.com
к вашему приложению. (Я предполагаю, что поддомен представляет ваш идентификатор клиента).
В вашем приложении вы можете извлечь поддомен из заголовка Host
. В nodejs это будет выглядеть примерно так:
const host = req.get('Host');
const [ tenant, ] = host.split('.');
Это решит вашу проблему, но имейте в виду, что вы действительно хотите отличить tenant_id только от аутентифицированного пользователя. Вы можете интегрировать Identity-Aware Proxy или специальное решение для аутентификации. Полагаться только на поддомен - это несколько надуманный метод для достижения того, что, как я думаю, вы пытаетесь сделать, и позволяет любому клиенту обнаруживать недостатки, которые могут обеспечить доступ к данным других арендаторов. Убедитесь, что вы используете субдомен только для косметических целей, с белой маркировкой, а не как часть стратегии аутентификации.
См. Также: