facebook - через - действительные uri перенаправления для oauth




REST API для веб-сайта, который использует Facebook для аутентификации (2)

ОБНОВЛЕНИЕ: см. Ниже

Я тоже много думал об этом вопросе. Это еще не совсем ясно, но вот маршрут, о котором я думаю. Я создаю REST API, и мои пользователи работают только с Facebook-подключением.

В КЛИЕНТЕ:

  1. Используйте API Facebook для входа и получения кода OAUTH2.
  2. Замените этот код для токена доступа.
  3. При каждом вызове моего пользовательского API я буду включать идентификатор пользователя Facebook и токен доступа.

В API (для каждого метода, который требует аутентификации пользователя):

  1. Сделайте запрос на график / me Facebook, используя токен доступа сверху.
  2. Убедитесь, что возвращаемый идентификатор пользователя Facebook соответствует идентификатору пользователя, переданному моему API сверху.
  3. Если токен доступа истек, требуется дополнительная связь.

Мне еще предстоит проверить это. Как это звучит?

--- Обновление: 27 июля 2014 года, чтобы ответить на вопрос ---

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

В КЛИЕНТЕ:

  1. Используйте API Facebook для входа и получения кода OAUTH2.
  2. Замените этот код для токена доступа.
  3. Запросить токен доступа из моего API, включая токен Facebook в качестве параметра

В API

  1. Получить запрос доступа к токену.
  2. Сделайте запрос на график / me Facebook, используя токен доступа к facebook
  3. Убедитесь, что пользователь Facebook существует и соответствует пользователю в моей базе данных.
  4. Создайте свой собственный токен доступа, сохраните его и верните его клиенту, который будет использоваться с этого момента.

У нас есть веб-сайт, где единственный способ войти в систему и аутентифицировать себя с сайтом - это Facebook (это было не моим выбором). При первом входе в Facebook вы автоматически создаете учетную запись.

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

Этот вопрос касается того, как аутентифицироваться с нашего веб-сайта из приложения / API и разбивается на 2 части:

  1. Каков правильный способ обработки REST-аутентификации из API на веб-сайт, который использует только OAuth Facebook в качестве метода проверки подлинности?

    Я много читал и много разбирался в стандартных методах аутентификации для REST API. Мы не можем использовать такие методы, как Basic Auth over HTTPS , поскольку учетные данные для пользователя как такового отсутствуют. Что-то вроде this кажется, только для аутентификации приложений с использованием API.

    В настоящее время лучшим способом я могу подумать, что вы нажмете / авторизуете конечный пункт нашего API, он перенаправляет на Facebook OAuth, затем перенаправляет обратно на сайт и предоставляет «токен», который пользователь API может использовать для аутентификации последующих Запросы.

  2. Для официального приложения, которое мы создаем, нам не обязательно будет использовать публичный API таким же образом. Каким будет лучший способ поговорить с нашим сайтом и аутентифицировать пользователей?

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

Я чувствую, что мне не хватает чего-то очень очевидного или не совсем понимаю, как должны работать общедоступные API-интерфейсы REST, поэтому мы будем очень благодарны за любые советы и помощь.


Это моя реализация с использованием JWT (JSON Web Tokens), в основном аналогичная обновленному ответу Криса. Я использовал Facebook JS SDK и JWT.

Вот моя реализация.

  1. Клиент: используйте JS SDK для входа в систему и получения токена доступа.

  2. Клиент: запросите JWT из моего API, вызывая /verify-access-token конечную точку /verify-access-token .

  3. MyAPI: получает токен доступа, проверяет его, вызывая /me конечную точку API Facebook.

  4. MyAPI: если токен доступа действителен, находит пользователя из базы данных, регистрирует пользователя, если существует. Создайте JWT с обязательными полями в качестве полезной нагрузки, установите истечение срока действия, подпишите с помощью секретного ключа и отправьте обратно клиенту.

  5. Клиент: Хранит JWT в локальном хранилище.

  6. Клиент: отправляет маркер вместе с запросом на следующий вызов API.

  7. MyAPI: проверить токен с помощью секретного ключа, если токен действителен, обменять токен на новый, отправить его обратно клиенту вместе с ответом API. (Нет внешних API-запросов для проверки токена здесь после) [если токен недействителен / истек клиент запроса для повторной аутентификации и повторения с 1]

  8. Клиент Заменяет сохраненный токен на новый и использует его для следующего вызова API. По истечении срока действия токена токен заканчивает отмену доступа к API.

Каждый токен используется один раз.

Подробнее о безопасности и JWT

Насколько безопасно JWT

Если вы можете декодировать JWT, как они защищены?

JSON Web Tokens (JWT) как идентификаторы идентификации и аутентификации





facebook-authentication