Как бы вы объединили OpenID с веб-службой RESTful?Использование OpenID (RPX) (и, возможно, OAuth) для веб-службы RESTful
Личный проект, над которым я работаю, использует RPX SaaS для выполнения OpenID. Ключевым результатом этого является URL-адрес, описывающий зарегистрированного пользователя. Само приложение очень сильно Javascript, и я планирую использовать REST api для связи с бэкэнд для сохранения базы данных и пространственной обработки.
Требования к безопасности в этом приложении невелики. Я хочу знать, какой пользователь делает запрос. Я не считаю, что мне нужно использовать SSL, чтобы быть конфиденциальным в отношении данных, и я не хочу накладных расходов на запуск SSL.
Я использую Spring и хотел бы использовать Spring Security (Acegi), если это возможно, но я не привязан к этой идее.
Варианты:
Возвращает URL OpenID для приложения Javascript, использовать это, чтобы получить список ресурсов для пользователя, а затем восстановить/сохранить/и т.д. эти ресурсы по идентификатору.
Создать таблицу сеансов, которая связывает URL OpenID со случайным токеном сеанса. Верните токен в приложение Javascript, которое затем должно вернуть токен с каждым последующим запросом.
Используйте сеанс из опции 2 в качестве потребительского токена и т. Д. Для OAuth. Первоначально сеанс будет отправлен в приложение с использованием шифрования PKI.
Опираясь на сеанс HTTP J2EE.
Из этих вариантов я склоняюсь к опции 2. Угон сессии будет сложно, как злоумышленник должен угадать идентификатор сеанса, и я не считаю, что приложение требует защиты от перехвата. Вариант 3 по существу совпадает с вариантом 2, но идентификатор сеанса недоступен для обнюхивания. Вариант 4 помещает URL OpenID в память сервера и вызывает все проблемы с масштабируемостью, которые REST предназначен для предотвращения.
Я благодарен за любое обсуждение этого вопроса.