Я думаю о веб-сервисе для отдыха, который гарантирует для каждого отправленного ему запроса, что:
Клиенты аутентифицируются с помощью идентификатора и подписи содержимого на основе их пароля.
Не должно быть сеанс вообще, и так состояние сервера! Сервер и клиент имеют общий секретный ключ (пароль)
После размышлений о Но и поговорив с некоторыми действительно хорошими людьми, кажется, что не существует службы отдыха, чтобы сделать это так просто, как это должно быть для моего варианта использования. (HTTP Digest и OAuth могут делать это с учетом состояния сервера и очень болтливы)
Итак, я представил один и прошу ваших великих комментариев о том, как он должен быть разработан (я выпущу его с открытым исходным кодом и надеюсь, что он поможет другим ).
Служба использует настраиваемый заголовок Content-signature для хранения учетных данных. Аутентифицированный запрос должен содержать следующий заголовок:
Content-signature: <METHOD>-<USERID>-<SIGNATURE>
<METHOD> is the sign method used, in our case SRAS.
<USERID> stands for the user ID mentioned earlier.
<SIGNATURE> = SHA2(SHA2(<PASSWORD>):SHA2(<REQUEST_HASH>));
<REQUEST_HASH> = <HTTP_METHOD>\n
<HTTP_URI>\n
<REQUEST_DATE>\n
<BODY_CONTENT>;
Запрос считается недействительным через 10 минут после его создания.
Например, типичный HTTP-ЗАПРОС будет:
POST /ressource HTTP/1.1
Host: www.elphia.fr
Date: Sun, 06 Nov 1994 08:49:37 GMT
Content-signature: SRAS-62ABCD651FD52614BC42FD-760FA9826BC654BC42FD
{ test: "yes" }
Сервер ответит:
401 Unauthorized
ИЛИ
200 OK
Переменными будут:
<USERID> = 62ABCD651FD52614BC42FD
<REQUEST_HASH> = POST\n
/ressource\n
Sun, 06 Nov 1994 08:49:37 GMT\n
{ test: "yes" }\n
Параметры URI
Некоторые параметры могут быть добавлены к URI (они перегружают информация заголовков):
* формат даты: http: // www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.18
Благодарим за комментарии.