Проверка подлинности веб-служб - лучшие практики?

У нас есть производственные веб-сервисы SOAP, которые используют аутентификацию SOAP-заголовков (содержащих простые учетные данные клиента). WS используются в гетерогенных средах с клиентами.NET/Java/PHP/Python/C++ как в веб-приложении, так и в настольном приложении.

Мы рассматриваем версию v2 для этих WS, и мне интересно, что считается наилучшей практикой для аутентификации WS SOAP? (достаточно безопасный, но простой в обращении на самых разных платформах).

3 ответа

Решение

Самый простой способ справиться с этим на различных платформах - это использовать базовую аутентификацию HTTP и HTTPS для транспортного уровня. WS-Security был бы хорош, если бы ваши потребности выходили за рамки простого имени пользователя / пароля, но поддержка будет сильно отличаться для разных платформ. HTTP-аутентификация поддерживается каждой достойной реализацией SOAP.

Если вам придется свернуть все это самостоятельно и вы не можете использовать HTTPS, я бы рекомендовал основанную на хэше UsernameToken часть WS-Security. Это довольно безопасно и довольно легко реализовать, если в ваших библиотеках есть функции хеширования.

Если вы пользуетесь веб-сервисами, я бы не стал использовать HTTP для аутентификации.

WS-Security в целом слишком велик.

В прошлом я решал эту проблему, используя стандартные функции WS-*.

Вместо использования функции аутентификации мы включаем функцию целостности заголовка сообщения. Это требует, чтобы обе стороны диалога имели доступ к паре открытого / закрытого ключа и обнаруживали любое вмешательство в поле имени пользователя в заголовке. Таким образом, вы можете быть уверены, что тот, кто отправил сообщение и установил идентификатор пользователя, имеет доступ к закрытому ключу.

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

Другие вопросы по тегам