2009-07-16 2 views
3

Может ли кто-нибудь дать мне несколько указаний относительно контроля доступа в веб-службах JAX-Rs. например ограничение доступа на основе учетных данных пользователя или имени или любых других критериев. Не удалось найти полезную информацию в руководствах по солнцу.Контроль доступа JAX-RS

Спасибо заранее, Adhir

ответ

3

Есть много способов, которыми люди выполнили это и есть много больших потоков на эту тему на этом сайте (см Best Practices for securing a REST API/web service)

Я лично использовать OAuth для выполнить эту задачу. Для получения дополнительной информации об OAuth проверьте Beginner’s Guide to OAuth

5

Я лично использую весеннюю безопасность для достижения этой цели. Весенняя безопасность позволяет легко использовать различные схемы аутентификации и авторизации (например, путем проверки заголовков основных/дайджеста из HTTP-запроса на базе базы данных или LDAP-сервера). Это не сложно установить с JAX-RS, а также имеет систему, основанную изящная аспект прав, где вы можете делать такие вещи, как

@PreAuthorize ("hasRole („ROLE_ADMIN“) или order.customer.username == user.username) deleteOrder (порядок заказа);

, который гарантирует, что проверка подлинности пользователь должен быть либо в ROLE_ADMIN группы или быть владельцем порядка, чтобы иметь возможность удалить это

Когда это настроено, все, что вам нужно сделать в вашем Ресурс JAX-RS предназначен для обработки исключения безопасности с весны и принятия соответствующего действия (fx. путем выброса WebApplicationException, как описано here)

+0

Если я не ошибаюсь, Spring Security реализуется как фильтр сервлета, поэтому, возможно, не так просто добавить обработчик исключения jax-rs. Я имею в виду, что исключение никогда не достигнет контроллеров JAX-RS. Не могли бы вы рассказать об этой части? Благодарю. –