При разработке REST API - это распространенный для аутентификации пользователя сначала?
типичный вариант использования, который я ищу:
я хотел бы создать его, после того как и позволить говорят что веб-приложение, применение андроида или приложение для iPhone для использования его.
А REST API, кажется, логический выбор с требованиями как это
Для иллюстрирования моего вопроса, я буду использовать простой пример.
у меня есть предмет в базе данных, которая имеет оценка атрибут (целое число 1 - 5).
, Если бы я понимаю REST правильно, я реализовал бы ПОЛУЧИТЬ запрос с помощью языка моего выбора, который возвращает csv, xml или json как это:
http://example.com/product/getrating/{id}/
Говорят, что мы выбираем JSON, который мы возвращаем:
{
"id": "1",
"name": "widget1",
"attributes": { "rating": {"type":"int", "value":4} }
}
Это хорошо для общедоступных API. Я получаю ту часть.
то, Где у меня есть тонны вопроса, - то, как я комбинирую это с моделью обеспечения безопасности? Я привык к безопасности веб-приложения, где у меня есть состояние сеанса, идентифицирующее моего пользователя во все время, таким образом, я могу управлять тем, что они могут сделать то независимо от того, что они решают отправить мне. Насколько я понимаю это не УСПОКОИТЕЛЬНО, так было бы плохое решение в этом случае.
я попытаюсь использовать другой пример с помощью того же предмета/оценки.
, Если пользователь "JOE" хочет добавить оценка к пункт
, Это могло бы быть сделано с помощью:
http://example.com/product/addrating/{id}/{givenRating}/
В этот момент я хочу хранить данные, говоря, что "JOE" дал продукт {идентификатор} оценка {givenRating}.
Вопрос: Как я знаю, что запрос прибыл из "JOE" и не "БОБА".
, Кроме того, что, если это было для более здравомыслящих данных как номер телефона пользователя?
то, Что я имею до сих пор:
1) Используют встроенную функцию HTTP для аутентификации в каждом запросе, или плоскость HTTP или HTTPS.
Это означает, что каждый запрос теперь принимает форму:
https://joe:joepassword@example.com/product/addrating/{id}/{givenRating}/
2) Использование подход как S3 Amazon с и открытым ключом с закрытым ключом: http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
3) Использование cookie так или иначе и повреждение часть не сохраняющая состояние REST.
второй подход кажется лучше мне, но меня оставляют, задаваясь вопросом, я должен действительно переосмыслить эту целую вещь? Хеширование, храня, генерируя ключи, и т.д. все один?
Это много походит на сессию использования в типичном веб-приложении и перезаписи всего стека самостоятельно, которые обычно мне означают, что "Вы делаете его неправильно" особенно при контакте с безопасностью.
РЕДАКТИРОВАНИЕ: Я предполагаю, что должен был упомянуть OAuth также.