У меня вопрос об аутентификации с помощью Диспетчера учетных записей Android. У нас есть бэкэнд и приложение для Android, и пользователь должен войти в наш бэкэнд, используя свою учетную запись Facebook. В настоящее время мы показываем веб-просмотр для этой цели, который делает обычный oAuth 2, но использование Android Account Manager более безопасно и намного проще для пользователя, поэтому мы хотим переключиться. Мой вопрос в том, как сервер может проверить, действительно ли пользователь, кем он себя притворяется. Поскольку мы не можем доверять App, мы должны поговорить с fb с серверной стороны, чтобы проверить, действительно ли пользователь является тем, кем он себя притворяется. Основываясь на довольно подобной идее, я сделал следующую диаграмму, чтобы спросить вас, правильно ли это это сделать или если я что-то пропустил:
Поток будет выглядеть так:
- Пользователь хочет войти в свою учетную запись в facebook
- Диспетчер учетных записей Android отображается там, где он выбирает учетную запись facebook
- Пользователь предоставляет доступ к тому, что "Мое приложение" имеет доступ к своим данным fb.
- Диспетчер учетных записей Android получает токен аутентификации с сервера Facebook.
- "Мое приложение" теперь имеет токен аутентификации и может получить доступ к данным fb пользователя.
- "Мое приложение" передает токен на "Мой сервер"
- Теперь "Мой сервер" проверяет, действует ли токен, получая пользовательские данные с сервера fb
- Если токен был действительным, "Мой сервер" возвращает обычный временный действительный файл cookie для текущего сеанса с "Мое приложение". Пользователь теперь вошел в систему на My Server со своей учетной записью fb.
Так верно ли это? Является ли шаг 6 хорошей идеей передать токен один раз на "мой сервер" или есть лучший способ? Btw Facebook - это просто пример, мы используем разные провайдеры auth, такие как FB, Google и Twitter, но поток должен быть одинаковым для каждого из них.