В настоящее время я создаю веб-сайт, на котором пользователи могут просматривать и изменять свои виджеты. Все взаимодействия с данными виджета, хранящиеся на моем сервере, будут выполняться через веб-службы RESTful. Например, если пользователь хочет увидеть список своих виджетов, поток выполнения будет выглядеть примерно так:
- Пользователь 12345 обращается к
https://www.example.com/Login.htm
и аутентифицируется на сервере (в моем случае через поставщика OpenID) - Пользователь 12345 затем обращается к странице
https://www.example.com/Widgets.htm
- Сервер отвечает HTML-страницей и javascript, которые будут использоваться для доступа к моим веб-службам.
- Когда страница HTML загрузится, будет вызываться функция javascript
getWidgets()
.getWidgets()
вызовет мой веб-сервисhttps://www.example.com/Services/Widget/12345
- Служба отвечает списком виджетов пользователей, которые другие функции javascript
renderWidgets(widgets)
будут обновлять страницу html
Я не хочу, чтобы кто-либо еще, кроме пользователя 12345, обращался к своим собственным виджетам, поэтому я предполагаю, что getWidgets()
должен будет предоставить некоторую аутентификацию для моей веб-службы. Я не уверен, что лучший способ достичь этого.
Я думал, что клиент и сервер могут иметь общий секрет, который getWidgets()
отправит в веб-службу. Сервер может генерировать этот секрет как случайную строку (число, GUID или что-то еще) и включать ее в заголовок ответа, когда клиент запрашивает исходную HTML-страницу. Клиент будет использовать этот секретный ключ при отправке запросов на сервер.
Это звучит как разумная идея?
Это обычное требование, так есть стандартный способ достижения одного и того же? Насколько мне известно, это выходит за рамки OpenID и OAuth не подходит.
Спасибо заранее.