Как убедиться, что Google PubSub обращается к моей конечной точке, а не к другому участнику

У меня есть полнофункциональная конечная точка, которая будет получать POST-запрос от подписки PubSub при обнаружении изменений в почтовом ящике Gmail пользователя. Внутри конечной точки я могу успешно извлечь все, что мне нужно для моих целей.

Проблема в том, что я понятия не имею, кто на самом деле попадает в мою конечную точку. Злоумышленник может просто передать мне ту же полезную нагрузку, что и Gmail.

Есть ли способ убедиться, что полезная нагрузка, которую я получаю, действительно получена от Google/Gmail/PubSub?

Со стороны Gmail: кажется, что полезная нагрузка, отправляемая на мою конечную точку, не может быть изменена и всегда будет иметь форму, описанную здесь: https://developers.google.com/gmail/api/guides/push

На стороне PubSub: вы можете создать свою собственную тему и добавить к ней пары ключ/значение в качестве настраиваемых атрибутов, но, похоже, я не смогу изменить полезную нагрузку, которую Gmail публикует в моей теме. https://cloud.google.com/pubsub/docs/publisher

Любое понимание было бы очень признательно, спасибо!


person Richard    schedule 13.11.2018    source источник


Ответы (1)


Предлагаемый способ сделать это — включить секрет в качестве параметра URL-адреса для вашей конечной точки. Затем вы можете отклонить любые URL-адреса, которые не содержат этот секрет. https://cloud.google.com/pubsub/docs/faq#security

Это можно настроить как часть вашей обычной конечной точки push при настройке подписки push.

Если вы хотите добавить дополнительные метаданные к предоставленным сообщениям gmail, вы всегда можете настроить задание облачного потока данных или облачную функцию в качестве подписчика непосредственно из темы gmail и повторно опубликовать во второй теме, из которой будет считываться ваша внешняя конечная точка.

-Дэниел

person Daniel Collins    schedule 13.11.2018
comment
Большое спасибо Даниил! Это именно то, что мне нужно. - person Richard; 14.11.2018