Разрешение на взаимодействие между модулями Google App Engine

В Документах Google говорится

Вы можете настроить любой модуль ручного или базового масштабирования для приема запросов от других модулей в вашем приложении, ограничив его обработчик только разрешенными учетными записями администратора, указав логин: admin для соответствующего обработчика в файле конфигурации модуля. С этим ограничением, любой URLFetch из любого другого модуля в приложении будет автоматически аутентифицирован App Engine, и любой запрос, который не из приложения, будет отклонен.

поэтому я сделал это, но, к сожалению, он не работает. Я запрашиваю url из модуля A модуля B, который защищен свойством login: admin

Я могу получить этот url в браузере, который показывает мне страницу входа в систему, и после того, как я продолжу в качестве администратора, я могу получить свой маршрут.

Как это должно работать? Насколько я понимаю, он должен добавить заголовок для запроса, который включает в себя какой-то токен авторизации.

Если я получаю тот же url в запросе на модуле A, я получаю тот же самый переадресацию. urllib2 по умолчанию отображается код состояния 302, а результат - страница входа в систему.

Я запускаю среду, используя команду gcloud preview app run. Модуль A является модулем по умолчанию, а модуль B является управляемая VM Контейнер, может быть, здесь проблема?

Ответ 1

Я могу подтвердить, что это происходит, и я воспроизвел проблему. Эта проблема отслеживается в отслеживании сообщений об ошибках App Engine. Следите за обновлениями.

В настоящее время я считаю, что гораздо лучше вручную проверять заголовок X-Appengine-Inbound-Appid, поскольку он управляется инфраструктурой и не может быть подделан.

Вы также можете реализовать OAuth, но это добавляет накладные расходы, которые вам могут не понадобиться или нужно в небольшом приложении.