Как защитить веб-сервисы Java с помощью входа и обработки сеанса - PullRequest
3 голосов
/ 31 марта 2010

Я бы хотел обезопасить свой веб-сервис (Java metro) с помощью логина.

Вот как я планирую это сделать:

При вызове метода веб-сервиса необходимо выполнить следующие шаги:

  1. вызов логина (пользователь, pwd), получение токена сеанса 1.1 запомни токен
  2. вызов метода обслуживания (токен, arg1, arg2 ...)
  3. webservice проверяет, известен ли токен, если не выдает исключение, в противном случае продолжите
  4. выход или тайм-аут после x периодов бездействия

мои вопросы: 1. что вы думаете об этом подходе? имеет ли это смысл? 2. есть ли библиотеки, которые берут на себя бремя написания обработки сеанса (возможно, с сохранением базы данных, чтобы пережить перезапуск приложения)

(решение должно быть простым и легко используемым с клиентами Java и .NET)

спасибо!

Ответы [ 3 ]

1 голос
/ 31 марта 2010

Это возможно, и я видел веб-сервисы, использующие подобный подход. Но я бы не стал реализовывать собственное решение. Вместо этого я бы использовал токен безопасности из спецификации WS-Security и, точнее, токен имени пользователя (вы получаете его из WSIT , который является частью Metro и, следовательно, совместим с клиентами .NET). Взгляните на эту статью для ознакомления.

Обновление: Больше указателей:

Я не могу сказать, что я нашел WS-Security очень дружелюбным, но, тем не менее, мой опыт показывает, что использование WS-Security занимает меньше времени, чем реализация пользовательского решения, более безопасно и лучше масштабируется (проверка базы данных при каждом вызове имеет стоимость).

Edit:

Исправлены первые две ссылки, потому что они были мертвы. Не могу найти один для третьего, но я думаю, что второй должен покрыть это.

1 голос
/ 31 марта 2010

Не стоит сразу же внедрять это самостоятельно с нуля. Многие J2EE-контейнеры / Java-фреймворки предлагают поддержку входа / контроля доступа. Взгляните на документацию по фреймворку, который вы сейчас используете.

Другой простой альтернативой является реализация контроля доступа на интерфейсном веб-сервере; например Apache HTTPD выступает в роли обратного прокси-сервера для Tomcat.

0 голосов
/ 12 апреля 2010

Я думал о том, чтобы попробовать Apache Shiro , я не могу сказать, действительно ли это хорошо. Выглядит хорошо, хотя.

...