Как я могу аутентифицировать свои приложения webservice после использования Facebook SSO на Android?

Я создаю приложение для Android, которое использует SSO для входа в систему, и я не уверен, как аутентифицироваться с помощью своих собственных веб-сервисов после входа в FB. Когда пользователь сначала открывает мое приложение, они заходят в Facebook, разрешают моему приложению некоторые привилегии и продолжают работать в моем приложении. Эта часть отлично работает, но теперь для использования моего приложения им необходимо создать учетную запись на моем сервере и поговорить с моими веб-службами.

Сейчас у меня есть вызов аутентифицировать webservice на моем сервере, который добавляет их идентификатор Facebook и другую базовую информацию в базу данных и в то же время выполняет обмен ключами Diffie-Hellman, поэтому любые будущие вызовы веб-сервисов могут быть зашифрованы общий ключ. Но проблема в том, что самый первый первоначальный вызов для создания этой учетной записи и создания этого общего ключа, как мне аутентифицировать это? Как я узнаю, что этот человек действительно тот, кто просто аутентифицирован с помощью Facebook, а не только тот, кто нашел URL-адрес моего веб-сервиса и создает учетные записи и сохраняет ключи?

Ответы

Ответ 1

Facebook SSO возвращает токен доступа. Если вы хотите, вы можете передать это на свой сервер, и ваш сервер может позвонить в API Facebook, чтобы проверить, что он действительный токен доступа для этого пользователя (например, вызывая https://graph.facebook.com/me?access_token=ACCESS_TOKEN) - если это так, вы хорошо знаете и подтвердили, что пользователь - это тот, кто они говорят (или хакер с достаточным доступом, чтобы иметь действительный токен аутентификации для ваше приложение для Facebook, после чего их личность была скомпрометирована в конце Facebook).

Ответ 2

Я думаю, вам нужно передать пароль вместе с вашей основной информацией о создании профиля. В целом, SSO для Facebook предоставляет только вашему клиентскому приложению доступ к пользователю профиля, но он не гарантирует ваши веб-сервисы, что вызывающий абонент является фактическим владельцем этой учетной записи FB. Я боюсь, что последующие вызовы от клиента Android к веб-службе должны быть аутентифицированы с помощью обычного пароля пользователя/имени (отличного от учетной записи FB), если вы хотите быть уверенным, что вызывающий абонент является тем, кто получил ключ первым (независимо от того, с каким профилем Facebook он может быть связан).