Эта проблема была в значительной степени решена WS-Trust, по крайней мере для веб-сервисов на основе SOAP. WS-Trust - это четко определенный протокол для проверки и обмена «токенами аутентификации», который может использоваться в сценариях между предприятиями с такими протоколами, как WS-Federation.
Один из примеров: клиенты запрашивают токен с сервера WS-Trust, а затем включают этот токен в заголовок SOAP хосту веб-службы. С другой стороны, нужно включить в запрос к хосту что-то простое, например , и иметь аутентификацию делегата на стороне сервера для сервера WS-Trust.
Существует довольно хорошая поддержка клиентов для WS-Trust - WCF имеет встроенную поддержку, а у разных поставщиков есть перехватчики J2EE для веб-служб JAX-RPC и JAX-WS.
Пока WS-Trust фокусируется на аутентификации, вы можете выполнить грубую авторизацию, используя логику о том, когда выдавать или проверять полученный токен. Не выдавайте / проверяйте токен, и доступ фактически запрещен. Для детальной авторизации для веб-сервисов обычно требуются пользовательские перехватчики, которые зависят от поставщика.
Я работаю в IBM Tivoli Security, и у нас есть несколько продуктов в этом пространстве. Первый - Tivoli Federated Identity Manager (TFIM). Мой коллега и я написали эту статью об интеграции TFIM с веб-сервисами на основе WSE и содержат обзор самого протокола WS-Trust. Второй продукт - Tivoli Security Policy Manager (TSPM), который реализует детализированную авторизацию для веб-сервисов.
Существуют реализации этих же протоколов с открытым исходным кодом, что является преимуществом использования основанного на стандартах решения. Я считаю, что у JBoss и WSO есть реализации, которые могут быть полезны.