Лучший способ создать защищенный уровень веб-службы RESTful, доступ к которому осуществляется через интерфейс ajax и запросы API - PullRequest
3 голосов
/ 23 февраля 2012

У меня есть слой веб-сервиса jax-rs, созданный с помощью jboss resteasy. Все веб-сервисы потребляют и производят объекты json. Мне нужно защитить этот слой для обработки запросов, поступающих из разных источников.

Доступ к ws возможен через интерфейс Ajax с регистрацией на основе формы. Поэтому мне нужно хранить сеанс пользователя на сервере и проверять его наличие при каждом запросе ws.

Более того, я хотел бы предоставить веб-сервисы через REST API с использованием некоторой аутентификации HMAC (без OAuth).

Кто-нибудь знает решение для его достижения? Было бы здорово иметь централизованный компонент авторизации, который мог бы обрабатывать запросы из обоих источников.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2012

Я не уверен, что 100% лучший способ справиться с этим, но у меня была похожая проблема. Я поделюсь им, если вы обнаружите, что это применимо. (Я не знаком с resteasy) По сути, существовал веб-сервис REST, к которому подключены наши мобильные платформы. Меня попросили отобразить некоторые данные из мобильных сервисов в нашем веб-приложении с проверкой подлинности с помощью форм.

Решение состояло в том, чтобы взять cookie-файл FormsAuthentication и добавить его в заголовок запроса, отправляемого службе, и служба расшифровывает этот cookie, чтобы получить пользователя, который отправляет запрос.

Это подразумевает 2 предположения: 1. что и ваша служба, и ваше веб-приложение используют одни и те же ключи шифрования и 2. что после входа в систему с помощью FormsAuth вашей службе не требуется снова полностью аутентифицировать учетные данные пользователей. Таким образом, служба просто говорит: «Могу ли я расшифровать токен? Является ли это действительным пользователем?»

0 голосов
/ 23 февраля 2012

Вы можете написать провайдера на основе JSR-196, который будет обрабатывать оба варианта использования для вас, а затем настроить его для обеих конечных точек.Может потребоваться добавить некоторый дискриминатор, чтобы служба знала, как проверять подлинность случайного запроса (например, это можно настроить в поставщике на основе URL-адреса).

...