Аутентификация пользователей API с помощью стороннего поставщика Oauth [закрыто]
я переключаю серверное веб-приложение на одностраничное приложение JavaScript с помощью RESTful API. В настоящий момент. пользователи могут пройти проверку подлинности с помощью Facebook, Твиттер, Google и т. д. или по электронной почте и паролю. Как разрешить одни и те же формы аутентификации, запущенные через RESTful API? Я предполагаю, что это выглядит примерно так:
- аутентификация с поставщиком на стороне клиента.
- возьмите что-то из ответа Oauth и передайте его API на моем сервере в обмен на маркер доступа.
- используйте аутентификацию на основе токенов для последующих вызовов API.
Я на правильном пути? Если это так:
- есть ли библиотека JS, которая обрабатывает нескольких поставщиков, или каждый из них требует включения чего-то вроде JS SDK Facebook?
- как должен выглядеть мой API, который генерирует токен? В частности, что мне нужно от поставщика Oauth и как проверить его на сервере?
2 ответов
вам будет проще обрабатывать процесс аутентификации против поставщиков удостоверений на стороне сервера, а не на стороне клиента. Поэтому ваш сервер REST должен поддерживать собственный метод аутентификации (который также может быть основан на OAuth) и передавать его стороннему поставщику. Таким образом, поток будет выглядеть примерно так:
инициировать процесс входа от клиента (JS) - вызовите конечную точку аутентификации REST, указав сеть, в которую вы хотите войти (например, myserver.com/login?provider=facebook).
обрабатывать процесс входа в систему на стороне сервера-перенаправление на конечную точку входа поставщика, получить обратный вызов входа в систему, обработать ответ (получить токен сеанса facebook и т. д.).
выдайте свой собственный сеанс пользователя (или токен, если вы делаете OAuth) и ответьте своему клиенту JS.
есть несколько социальных библиотек входа, которые могут помочь вам, проверить http://hybridauth.sourceforge.net/ для PHP или http://code.google.com/p/socialauth/ для Java.
есть также несколько коммерческих решений, которые могут сделать вашу жизнь намного проще (я работаю на Gigya поэтому я пристрастен), но это только если у вас есть бюджет.
Я бы рекомендовал создать ключи доступа API или использовать отдельный поток OAuth специально для вашего API. Концептуально вы захотите разделить акт создания учетной записи с вашей службой и подключение удаленных учетных записей. Вы, вероятно, могли бы снять то, что вы описываете, но это будет запутанно.
для составления протокола OAuth проще в клиенте, проверить протокол OAuth.Ио