Я пытаюсь реализовать подход Rest для разработки моего API.
Пожалуйста, ознакомьтесь с приведенным ниже рабочим процессом и попытайтесь развеять мои сомнения, а также укажите на ошибки.
Клиент (веб-браузер) Остаточный вызов от клиента ->/post/login username/password
Служба сервера/логина проверяет с БД правильность имени пользователя и пароля Отвечает ok:200 + отправляет данные обратно-> X
Клиент получает подтверждение того, что пользователь аутентифицирован + данные -> X Теперь использует данные X для последующих вызовов на сервер, чтобы получить информацию о пользователе через другие сервисные вызовы.
/get/FirstName_of_User/X или
/get/LastName_of_User/X
теперь я сомневаюсь в следующем (как лучше всего сделать следующее)
Поскольку для последующих запросов нам нужно сообщить сервису, чьи данные мы запрашиваем, каким должен быть X? (Имя пользователя или временный токен создан (не имеет смысла, так как Rest - это отсутствие гражданства) или что-то еще?)
После того, как этот X будет возвращен, где он должен храниться на стороне клиента, чтобы на него можно было подать в суд для каждого последующего запроса? (Файл cookie или какой-либо другой способ существует)?
если так я делаю последующие вызовы
/get/FirstName_of_User/X
если этот вызов будет сделан кем-то другим, тогда он даст результат, я хочу, чтобы человек, только что вошедший в систему, получил только результат.
Сомнение 3 - я нашел эту ссылку в stackoverflow - Используется ли сеанс для аутентификации REST? а>
который предлагает использовать HMAC и нашел эту ссылку - http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/, в котором рассказывается о том, как HMAC можно использовать для Rest (в основном речь идет о наличии закрытого ключа как на клиенте, и сервер и использовать его для хеширования запроса).
Я сомневаюсь в этом подходе: скажем, я использую пароль в качестве закрытого ключа, о котором знают и клиент, и сервер. Тогда на стороне клиента мы должны просто сохранить пароль в файлах cookie для хэширования каждого последующего запроса?
Спасибо Любая помощь в любых сомнениях приветствуется
PS: я пытаюсь реализовать систему, используя PHP + Mysql