Аутентификация: проверка маркера доступа пользователя Facebook на стороне сервера?


Здесь много вопросов о процессе проверки Facebook access token на стороне сервера. Я немного смущен, как все еще безопасно?

Мои клиентские и серверные потоки:

  1. пользователь Continue with Facebook, использующий Mobile SDK на стороне клиента.
  2. Facebook возвращает User access token на клиентскую сторону.
  3. конечные точки сервера получают user access token (с помощью метода POST) и проверяют access_token с помощью Graph API.
  4. в случае аутентификации пользователя верните маркер авторизации JWT в ответ
  5. тем временем (в течение часа), если хакеры обнаружат endpoint и передадут новый access_token взломанной конечной точке.

Что произойдет, если 5th точка будет выполнена? Трудно взломать параметры POST, но это может быть возможно после декомпиляции приложения и просмотра файла классов (по крайней мере, для android apk). В этом случае сервер не распознает поддельный запрос и всегда возвращает маркер JWT Authorization для дальнейших вызовов.

Действительность Facebook access_token - это 60 дней. Нужно ли обеспечить дополнительный уровень безопасности во время проверки конечной точки, чтобы убедиться, что запрос поступает только из приложения?

Всегда ли меняется facebook user access_token, когда пользователь запрашивает вход?

Любая помощь была бы заметна. Спасибо
1 2

1 ответ:

Решение:

Генерируемое access_token всегда будет принадлежать приложению. Чтобы проверить это, передайте access_token и app_tokenв:

https://graph.facebook.com/debug_token?
access_token=ACCESS_TOKEN
&app_token=APP_TOKEN