Доверие объектам и владениям Google API Response - PullRequest
0 голосов
/ 09 января 2019

Я успешно внедрил Google Login в своем веб-приложении, используя OAuth 2.0 для клиентских веб-приложений . Для большинства нужд мне просто нужно, чтобы пользователь вошел в мое приложение один раз, и я передаю id_token обратно на сервер, чтобы аутентифицировать его, и возвращаю токен JWT внешнему интерфейсу в случае успеха. Пользователю не нужно регистрироваться каждый раз, когда они посещают страницу, сохраняя этот токен JWT в браузере.

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

На стороне клиента я получаю согласие на использование API Google от имени пользователя, а затем использую токен Bearer, который мне возвращают, чтобы сделать запрос к этому API, и затем я возвращаю объект от Google.

Теперь я хочу передать этот объект на мой сервер (мой бэкэнд), чтобы сохранить некоторую информацию в моей базе данных, связанную с пользователем, который вошел в мою систему. Как я могу подтвердить на своем сервере, что объект, который я получил от Google по доверенности через браузер, на самом деле принадлежит пользователю, который передает его на мой сервер.

Что мешает кому-то использовать cURL со своим действительным токеном JWT на моем сервере и передавать какой-то произвольно созданный объект Google своего собственного создания. В объекте ответа Google я не вижу ничего, что могло бы подтвердить его подлинность на моем сервере (как я могу это сделать с помощью идентификатора id_token, полученного при успешном входе в систему, как описано здесь ). Возможно, на объекте есть поле «sub» (которое, я думаю, является понятием идентичности Google), которое, по крайней мере, позволяет мне знать, что оно принадлежит пользователю Google, если я могу в первую очередь доверять подлинности объекта.

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

...