Каков наилучший способ проверки подлинности и авторизации в веб-службах?
Я разрабатываю набор веб-сервисов, требующих контроля доступа на основе ролей. Использование metro - SOAP, простая java без EJB.
- Я хочу аутентифицировать пользователя только один раз, используя имя пользователя и пароль, который будет сопоставляться с базой данных. В последующих вызовах.
- Я хотел бы использовать какое-то управление сеансом. Может быть, некоторые идентификатор сеанса, полученный клиенту при входе в систему, который будет представлен во всех вызовы.
До сих пор:
- Прочитайте аутентификацию с использованием базы данных - но я хочу проверить уровень приложения;
-
Прочитайте аутентификацию приложения с помощью jax-ws - но я не хочу каждый раз выполнять механизм аутентификации;
-
Я думаю, что могу использовать обработчик SOAP, перехватывать все сообщения и выполнять управление авторизацией в hander, используя токен идентификатора сеанса, который поставляется вместе с сообщением, которое может быть сопоставлено с сохраненным идентификатором в базе данных, в веб-методе входа в систему.
EDIT:
У меня есть еще вопросы:
- Как узнать имя вызываемого веб-метода?
- Какой токен я должен использовать?
- Как передать этот токен между вызовами?
РЕДАКТИРОВАТЬ 2
Из-за ответа @ag112:
Я использую Glassfish.
Я использую WS-Policy и WS-Security для шифрования и подписания сообщений. Использование взаимной проверки подлинности сертификата. Я хотел бы дополнить эту безопасность уровня сообщений между приложениями, аутентификацию и авторизацию для пользователей также на уровне сообщений.
Я просто разрабатываю сервисы, и я почти не знаю клиентов, просто чтобы они могли быть созданы на разных языках.
В этот момент я думаю, что самое главное - делать то, что когда-либо мне нужно для аутентификации и аутентификации пользователей, я самый простой способ реализовать для клиентских приложений.