Я задавал различные вопросы о своей проблеме (здесь и здесь), и я также спросил на канале #oauth & #openid freenode в IRC. (это обратите внимание на вопрос «ВВЕРХ», это другая проблема)
Я подытожу конфигурацию моего проекта: у любого будет возможность создать приложение, которое может использовать мой API. Для начала я буду работать над своим API и веб-приложением, но документация по API будет общедоступной. Это немного похоже на Twitter API.
Проблема, с которой я сталкиваюсь, заключается в том, как я могу быть уверен, какой пользователь использует API (для получения своих личных данных, таких как ваши твиты), даже если пользователь использует приложение, которое я не знаю, кто его создал (опять же, как твиттер и все приложения вокруг).
Я много гуглил и с помощью предыдущих ответов взглянул на OAuth.
Насколько я понял, как работает OAuth, вот как:
- Пользователь посещает приложение, использующее мой API (веб, мобильное приложение и т. д.)
- Приложения перенаправляют пользователя на API для аутентификации (я буду использовать OpenId) и авторизации (OAuth). Это немного странно, так как API будет иметь веб-интерфейс для входа и авторизации (я полагаю, так это работает с Twitter сделать это)
- API перенаправляет подключенного пользователя в приложение с некоторыми токенами. В этих токенах есть токен, представляющий пользователя, который приложение должно хранить, чтобы указать API, какой пользователь использует его в данный момент (правильно ли я?)
Пока все идет хорошо. Но чего я не могу понять, так это когда пользователь выходит из приложения и снова заходит: как приложение может запомнить, что пользователь использовал его раньше?
(Прежде чем некоторые из вас принесут мне ответ cookie, я отмечу, что это простой пример, это будет то же самое, если пользователь очистит свои файлы cookie, отформатирует свой компьютер или изменит свой компьютер .)
Единственное решение, которое я могу найти, это когда неаутентифицированный пользователь (например, без запоминающего файла cookie) заходит в приложение, приложение снова перенаправляет его в API для аутентификации, но на этот раз пользователю не придется повторно разрешить приложение (авторизацию), так как оно уже это сделало. Затем API вернет пользователя в приложение, чтобы он мог поиграть с этим.
Это правильный и безопасный способ сделать это?
IRC-канал #OAuth рассказал мне о новом протоколе WebID, но в настоящее время он находится в режиме предварительного проекта, и я не хочу использовать что-то, что будет постоянно меняться в будущем :/
Спасибо большое за помощь!