Введение
Web Services Security (WS Security, WSS) — это расширение протокола SOAP для обеспечения безопасности веб-сервисов. Это один из стандартов спецификаций веб-сервисов, опубликованный организацией OASIS. Протокол определяет способы обеспечения целостности и конфиденциальности сообщений и позволяет передавать различные форматы токенов безопасности, такие как Security Assertion Markup Language (SAML), Kerberos и X.509. Его основная задача — использование XML-подписи и XML-шифрования для обеспечения сквозной безопасности.
Комплексная безопасность
Если требуется посредник SOAP, и уровень доверия к посреднику не отличается, сообщения необходимо подписывать и, опционально, шифровать. Это может относиться к прокси-серверу прикладного уровня на границе сети, который завершает TCP (протокол управления передачей) соединения.
Неотрицание
Один из способов обеспечения неотрекаемости – запись транзакций в журнал аудита, защищенный определенными мерами безопасности. Цифровые подписи, поддерживаемые WS-Security, предоставляют более прямое и верифицируемое доказательство неотрекаемости.
Альтернативные транспортные связки
Хотя почти все SOAP-сервисы используют HTTP-соединения, теоретически могут быть использованы и другие типы соединений, такие как JMS или SMTP; в этом случае потребуется сквозная защита.
Обратный прокси/общий токен безопасности
Даже если веб-сервис использует защиту на уровне транспорта, может потребоваться, чтобы сервис знал о конечном пользователе, если он работает через обратный HTTP-прокси. Заголовок WSS может быть использован для передачи токена конечного пользователя, заверенного обратным прокси.
Проблемы
Если между поставщиком услуг и потребителем происходит частый обмен сообщениями, накладные расходы, связанные с XML SIG и XML ENC, становятся существенными. Если требуется сквозная защита, протокол, такой как WS SecureConversation, может снизить эти накладные расходы. Если этого достаточно, используйте только шифрование или подпись, поскольку их комбинация значительно медленнее, чем простая сумма времени, затрачиваемого на каждую операцию по отдельности. См. раздел "Производительность" ниже. Объединение нескольких XML-схем, таких как SOAP, SAML, XML ENC и XML SIG, может привести к зависимости от различных версий библиотечных функций, например, канонизации и разбора, что сложно поддерживать в серверном окружении. Если используется только шифрование/дешифрование в режиме CBC или если дешифрование в режиме CBC выполняется без предварительной проверки безопасной контрольной суммы (подписи или MAC), то реализация, скорее всего, будет уязвима к атакам на основе оракула дополнений.
История
Веб-сервисы изначально полагались на базовую транспортную безопасность. Фактически, большинство реализаций до сих пор это делают. Поскольку SOAP допускает использование нескольких транспортных протоколов, таких как HTTP и SMTP, потребовался механизм безопасности на уровне SOAP. Отсутствие сквозной безопасности из-за зависимости от транспортной безопасности было еще одним фактором. Протокол был первоначально разработан компаниями IBM, Microsoft и VeriSign. Их первоначальная спецификация была опубликована 5 апреля 2002 года, а 18 августа 2002 года к ней было добавлено дополнение. В 2002 году в Технический комитет OASIS WSS были представлены два предложения: Web Service Security (WS Security) и Web Services Security Addendum. В результате была опубликована WS Security: WS Security 1.0 была выпущена 19 апреля 2004 года, а версия 1.1 – 17 февраля 2006 года. Стандарт версии 1.0, опубликованный OASIS, содержал ряд существенных отличий от стандарта, предложенного консорциумом IBM, Microsoft и VeriSign. Многие системы были разработаны с использованием предложенного стандарта, и эти различия привели к их несовместимости с системами, разработанными в соответствии со стандартом OASIS. Некоторые называют предварительную спецификацию OASIS «WS Security Draft 13» или «Основная спецификация безопасности веб-сервисов». Однако эти названия не получили широкого распространения, и сегодня бывает трудно однозначно определить, использует ли приложение или сервер спецификацию до или после OASIS. В большинстве сообщений на форумах ключевое слово «WSSE» используется для обозначения версии, предшествовавшей OASIS, поскольку она требовала использования префикса пространства имен XML «wsse» для URL (и аналогичных URL-адресов различных версий). Протокол официально называется WSS и разрабатывается комитетом в Oasis Open.
WS Security 1.0 was released on 19 April 2004. Version 1.1 was released on 17 February 2006. The version 1.0 standard published by OASIS contained a number of significant differences to the standard proposed by the IBM, Microsoft and VeriSign consortium. Many systems were developed using the proposed standard and the differences made them incompatible with systems developed to the OASIS standard. Some refer to the pre OASIS specification as the "WS Security Draft 13", or as the Web Services Security Core Specification. However these names are not widely known and indeed today it is hard to clearly identify whether an application or server is using a pre or post OASIS specification. Most forum posts use the keyword "WSSE" to refer to the pre OASIS version because it mandated the use of a "wsse" XML namespace prefix to the URL (and similar URLs of different versions). The protocol is officially called WSS and developed via committee in Oasis Open.
Сопутствующие спецификации
Следующие черновики спецификаций связаны с WS Security: WS Federation, WS Privacy, WS Test. Следующие утвержденные спецификации связаны с WS Security: WS Policy, WS SecureConversation, WS Trust, ID WSF. Следующие архитектуры используют WS Security: TAS3.
Альтернативный вариант
В ситуациях типа "точка-точка" конфиденциальность и целостность данных также могут быть обеспечены для веб-сервисов посредством использования безопасности транспортного уровня (TLS), например, отправкой сообщений по протоколу HTTPS. Однако WS-Security решает более широкую задачу поддержания целостности и конфиденциальности сообщений вплоть до момента их отправки с исходного узла, обеспечивая так называемую сквозную безопасность. Использование TLS может значительно снизить накладные расходы, устраняя необходимость кодирования ключей и подписей сообщений в XML перед отправкой. Сложность использования TLS заключается в том, что сообщения могут проходить через прокси-сервер на уровне приложения, которому необходимо видеть запрос для маршрутизации. В таком случае сервер увидит запрос, поступающий от прокси-сервера, а не от клиента; эту проблему можно решить, предоставив прокси-серверу копию ключа и сертификата клиента, либо используя сертификат подписи, которому доверяет сервер, и с помощью которого он сможет сгенерировать пару ключ/сертификат, соответствующую клиентским. Однако, поскольку прокси-сервер не обрабатывает содержимое сообщения, он не обеспечивает сквозную безопасность, а лишь безопасность типа "точка-точка".