2012-01-14 1 views
4

При разработке веб-службы (системы управления больницами) с использованием Java EE необходимо ли, чтобы для каждого вызова веб-службы необходимо было проверить, что пользователь зарегистрирован?Проверка подлинности веб-сервисов в Java EE

Какой метод проверки подлинности является лучшим JAAS, WS-Security, SAML или комбинацией или с использованием own tokens?

+0

будет голосовать за каждого, кто отвечает ... кто-то ответит быстро ... – nkvp

ответ

1

Все зависит от того, как будет реализован ваш веб-сервис. Если у вас есть выбор, я бы рекомендовал использовать подход REST, аутентифицировать пользователя с помощью какой-либо функции входа в систему, а затем поддерживать сеанс пользователей.

+0

Лучше ли вы войти в систему? реализуется в приложении веб-службы J2EE, сохраняя UserPrincipal в SessionContext и извлекая его каждый раз, когда метод называется программным образом, например, например, PATIENT A покупает лекарство, хорошая практика программирования для хранения UserPrincipal в SessionContext и получение идентификатора пользователя от него использовать в транзакции или, лучше ли каждый раз передавать токен каждой транзакции и хранить всех зарегистрированных пользователей и токенов, выпущенных в таблице, чтобы при совершении покупки токен можно использовать для получить идентификатор пользователя? – nkvp

1

Вы можете использовать фильтры.

Вот пример того, как использовать фильтры:

http://viralpatel.net/blogs/2009/01/tutorial-java-servlet-filter-example-using-eclipse-apache-tomcat.html

В основном вы определите URL, где вы хотите, фильтры, чтобы применить фильтр разрешает пользователю, а затем вызывает chain.doFilter (запрос, ответ); для вызова запрошенного метода после авторизации.

Вы также можете посмотреть на этот jax-rs rest webservice authentication and authorization

Лично я использовать маркеры для авторизации.

+0

ok .... но лучше ли логин быть внедренным в приложении веб-службы J2EE, сохраняя UserPrincipal в SessionContext и извлекая его каждый раз, когда вызывается метод программно использовать например сказать пациент покупает лекарство, это хорошая практика программирования для хранения UserPrincipal в SessionContext, и получить идентификатор пользователя из его использовать в сделке, или, является лучше каждый раз передавать токен для каждой транзакции и хранить всех зарегистрированных пользователей и токенов, выпущенных в таблице, чтобы при совершении покупки маркер мог использоваться для извлечения идентификатора пользователя? – nkvp

+0

В моем проекте я использую токены, которые храню локально в базе данных. Тем не менее, я не уверен на 100%, что этот дизайн в порядке. Взгляните на этот вопрос, который я разместил, может быть, мы получим хороший ответ здесь: http://stackoverflow.com/questions/9185362/authentication-and-authorization-for-a-given-scenario – Timo89