WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 |   ...   | 3 | 4 ||

«Ильдар Хабибуллин Разработка Web-служб средствами Архитектура Web-служб Работа Web-служб в J2EE Безопасность предоставления услуг МАСТЕР_ПРОГРАМ Ильдар Хабибуллин Разработка ...»

-- [ Страница 5 ] --

WSDL-файл, конфигурационный файл компонента web.xml или ear-jar.xml, конфигурационный файл Web-службы webservices.xml, конфигурационный файл клиента webservicesclient.xml и JAX-RPC-файл. Поэтому для Web службы надо использовать специализированные средства установки.

Фирма IBM поставляет эталонную реализацию (RI — Reference Implementation) спецификации "Web Services for J2EE" со своего сайта http://www-106.ibm.com/developerworks/webservices/. В нее входят классы, полностью реализующие интерфейсы спецификации, вспомогательные классы и утилиты. Классы эталонной реализации расширяют пакет классов 336 Разработка Web-служб средствами Java J2EE SDK, образующих J2EE-cepBep и используются Web-службами, уста новленными на этом сервере.

Для построения Web-службы эталонная реализация предлагает утилиту svcgen (Web Service Generator), работающую из командной строки. Ее мож но использовать двумя способами: или для создания Web-службы по уже откомпилированным интерфейсам и классам, или для создания Web службы по ее описанию WSDL.

В первом случае командная строка выглядит так:

$ svcgen [ - c l a s s p a t h ] -sei \ -map -wsdl В этой строке необязательный параметр -classpath указывает путь к клас сам Web-службы. Параметр -sei содержит краткое имя SEI-интерфейса без расширения.class. Параметр -тар связывает идентификатор целевого про странства имен создаваемого утилитой WSDL-файла с пакетом классов Java.

Параметр -wsdl содержит имя создаваемого утилитой WSDL-файла.

Во втором случае командная строка выглядит иначе:

$ svcgen -wsdl -map [ - d i r ] Здесь параметр -wsdl содержит имя уже существующего WSDL-файла. Па раметр -тар определяет имя создаваемого пакета Java. Необязательный па раметр -dir указывает имя каталога, в который будут помещены создавае мые утилитой файлы Java и JAX-RPC-файл, имя которого повторяет имя WSDL-файла с окончанием ".deployment.xml". Если этот параметр опущен, то файлы будут помещены в каталог $WS4EE_HOME/temp/svcgen/. Создан ные файлы надо просмотреть, добавить в них фактический код Web-службы и откомпилировать.

После создания Web-службы ее надо упаковать в архив application.ear обыч ными средствами J2EE-cepBepa, например, утилитой deploytooi. При упа ковке надо включить в архив файл webservices.xml, а для клиента файл webservicesclient.xml. Это можно сделать впоследствии утилитой wsdd.

Установка созданной и упакованной Web-службы выполняется утилитой wsdepioy. Ее командная строка выглядит так:

$ wsdepioy [ -coutput.jar> ] Первый параметр —исходный архив — должен находиться в те кущем каталоге. Утилита создает файл с именем Enabled, полно стью готовый для утилиты deploytooi. Если указан второй параметр , то утилита создаст архив, содержащий все необходимое для установки клиента Web-службы. Затем утилита wsdepioy вызывает утилиту deploytooi, которая заканчивает процесс установки.

ГЛАВА Безопасность предоставления услуг Сфера применения Web-служб стремительно расширяется. В настоящее время в нее вовлекаются банковские транзакции, финансовые операции, медицинские консультации — те Web-услуги, которые требуют секретности, точности, достоверности. Это заставляет обращать особенное внимание на безопасность предоставления услуг.

Вопросы безопасности обсуждаются с тех самых пор, как люди стали пре доставлять и получать услуги. При заключении всякой сделки важно убе диться в том, что она будет совершена точно, в срок, с соблюдением всех оговоренных условий. Применительно к Web-услугам можно выделить пять основных проблем безопасности.

• Конфиденциальность (confidentiality) данных. Сообщения, пересылаемые между Web-службой и ее клиентами, не должны читаться никем, кроме отправителя и получателя. Конфиденциальность достигается шифрова нием сообщений.

• Целостность (integrity) данных. Клиент и Web-служба должны быть уве рены, что данные во время пересылки не изменились посторонними ли цами или аппаратными средствами. Уверенность в целостности сообще ния обеспечивается цифровой подписью или добавлением дайджеста со общения MD (Message Digest).

• Аутентификация (authentication) партнера или сообщения. И клиент, и Web-служба должны быть уверены, что имеют дело с тем партнером, за кого он себя выдает. Для этого сообщение подписывается цифровой подписью, известной другой стороне, или к сообщению прилагается цифровой сертификат.

12 3ак. 338 Разработка Web-служб средствами Java • Авторизация (authorization) клиента. Клиент может получить только те услуги, которые он имеет право получать. Это достигается разными спо собами: назначением ролей, составлением списков доступа ACL (Access Control Lists), выбором политики доступа.

• Неаннулируемость (nonrepudiation) услуг. И клиент, и Web-служба долж ны быть уверены, что другая сторона строго выполнит взятые на себя обязательства. Этого можно достигнуть при помощи цифровой подписи или NR-маркера.

Как видно из этого перечня, за многие века обмена услугами выработаны и методы решения проблем безопасности. Давно существует и бурно развива ется целая наука — криптография. Приведем краткое описание ее основных понятий.

Криптография Криптография занимается разработкой методов обработки данных с целью сокрытия их смысла. Для этого одним из множества алгоритмов шифрова ния исходное сообщение преобразуется в бессмысленный набор битов, ко торый можно быстро преобразовать обратно в первоначальный текст, толь ко зная ключ (key) шифрования. Секретность ключа обеспечивает конфи денциальность сообщения.

Различают два вида ключей: симметричные (закрытые) ключи, и асиммет ричные (открытый и закрытый) ключи.

Симметричные ключи Шифрование и расшифровка сообщения производятся с помощью одного и того же ключа, поэтому он и называется симметричным ключом. Алго ритмы шифрования с симметричным ключом работают быстро и надежно.

Их надежность напрямую зависит от длины ключа — чем длиннее ключ, тем больше времени требует дешифровка сообщения. (Дешифровкой назы вается попытка чтения зашифрованного сообщения без знания ключа.) Наиболее распространены следующие алгоритмы, применяющие симмет ричные ключи.

• Широко распространен алгоритм DES (Data Encryption Standard) с 56 разрядным ключом. Это стандарт для защиты от несанкционированного доступа к служебной документации в государственных учреждениях США.

• В России для тех же целей применяется ГОСТ 28147—89. Он использует 256-разрядный ключ.

Глава 8. Безопасность предоставления услуг • Алгоритм DES часто применяется к сообщению трижды с разными клю чами. Эта схема шифрования называется Triple-DES или 3DES.

• Международный алгоритм шифрования данных IDEA (International Data Encryption Algorithm) использует 128-разрядный ключ.

• Алгоритмы Брюса Шнайера (Bruce Schneier) Blowftsh, с 56-разрядным ключом, и Twofish, в котором длина ключа достигает 256 разрядов, не запатентованы и свободно доступны в Интернете по адресу http://www.counterpane.com/labs.html.

• Широко распространена целая серия алгоритмов Рональда Ривеста (Ronald Rivest) RC2, RC4, RC5, RC6. Они различаются скоростью шиф рования и длиной секретного ключа.

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

Асимметричные ключи В этом случае у каждого участника обмена сообщениями — Web-службы и ее клиента — есть по два ключа — открытый (public key), известный всем, и закрытый (private key), известный только самому участнику. Открытый ключ предназначен для шифрования сообщения, закрытый — для его рас шифровки. Клиент шифрует свое сообщение открытым ключом Web службы и посылает шифровку вместе со своим открытым ключом. Зашиф рованное сообщение может прочитать только Web-служба, которой оно предназначено. Web-служба расшифровывает его своим закрытым ключом, читает, составляет ответ, и шифрует ответное сообщение открытым ключом клиента. Зашифрованный ответ может прочитать только клиент, расшифро вав его своим закрытым ключом.

Итак, при использовании асимметричных ключей вместе с зашифрованным сообщением или до него посылается открытый ключ отправителя.

Разработано множество алгоритмов шифрования с асимметричными ключами.

• Алгоритм DSA (Digital Signature Algorithm) позволяет использовать ключи любого размера. Алгоритм стандартизирован, стандарт DSS (Digital Signature Standard) рекомендует ключи длиной от 512 до 1024 двоичных разрядов. Алгоритм применяется, главным образом, для создания циф ровой подписи.

• Алгоритм RSA, названный по первым буквам фамилий авторов (Rivest, Shamir, Adleman), использует ключи длиной до 1024 битов.

340 Разработка Web-служб средствами Java • Алгоритм Диффи-Хелмана DH (Diffie-Hellman) работает с ключами дли ной до 4096 битов.

• Алгоритм AlGamal Тегера Эль-Гамала (Taher ElGamal) не запатентован, он используется свободно.

В реальных криптографических системах симметричные и асимметричные ключи часто комбинируются. Например, известно, что шифрование откры тым ключом занимает больше времени, чем шифрование секретным клю чом. Для ускорения работы поступают так: сообщение шифруют симмет ричным ключом, затем этот симметричный ключ шифруют открытым клю чом получателя и отправляют вместе с зашифрованным сообщением.

Получатель сначала расшифровывает симметричный ключ своим закрытым ключом, а затем расшифровывает сообщение уже известным ему симмет ричным ключом.

Дайджест сообщения Иногда в результате шифрования получают короткий дайджест сообщения MD (Message Digest), который посылают вместе с незашифрованным сооб щением. Это делается не с целью достижения конфиденциальности, а для сохранения целостности послания. Получатель повторно шифрует сообще ние тем же алгоритмом и сравнивает полученный дайджест с тем, который был прислан вместе с сообщением. Совпадение дайджестов гарантирует не изменность сообщения по пути следования. Своеобразие дайджеста заклю чается в том, что его не надо расшифровывать. Это позволяет применять для получения дайджеста мощные односторонние алгоритмы.

• В настоящее время наибольшее распространение получил алгоритм Ро нальда Ривеста MD5, описанный в рекомендации RFC 1321. Он создает 128-разрядный дайджест.

• Алгоритм SHA-1 (Secure Hash Algorithm) использует хеш-функцию для получения 160-разрядного дайджеста. У алгоритма есть расширения SHA-256, SHA-384, SHA-512 для получения более длинных дайджестов.

• В алгоритмах под общим названием MAC (Message Authentication Code) кроме самого алгоритма используется и секретный ключ. Алгоритм ис пользуется главным образом для создания цифровой подписи.

Цифровая подпись Для решения задач аутентификации и неаннулируемости, сообщение часто снабжается цифровой подписью. В самом простом случае для получения цифровой подписи применяются асимметричные ключи обратным спосо Глава 8. Безопасность предоставления услуг бом — автор сообщения шифрует его своим закрытым, а не открытым клю чом. После этого всякий желающий может расшифровать сообщение от крытым ключом автора и прочитать его. Поскольку закрытый ключ знает только автор, зашифровать сообщение мог только он. Этим подтверждается авторство сообщения.

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

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

Цифровой сертификат Широкое распространение открытых ключей поставило задачу целостности и аутентификации самих открытых ключей. Отправитель, шифрующий со общение открытым ключом адресата, должен быть уверен, что ключ дейст вительно принадлежит адресату, а не подменен злоумышленником, высту пающим от имени адресата. Для этого открытые ключи заверяются цифро вой подписью, но подписью не адресата, а доверенного лица — центра сертификации СА (Certificate Authority).

Кроме открытого ключа и цифровой подписи, сертификат содержит сведе ния о центре сертификации и пользователе ключа, время действия ключа, назначение ключа: шифрование, цифровая подпись, дайджест. Структура сертификата и правила его использования определены международным стандартом ISO X.509.

Центры сертификации имеются во многих странах. Наиболее авторитетна организация VeriSign, http://www.verisign.com/, у которой есть сеть филиалов на нескольких сайтах Интернета.

Реализация криптографии в Java В стандартную поставку Java 2 SDK, Standard Edition входят средства Security API, реализующие многие криптографические алгоритмы. В Security API вхо дит пакет JCA (Java Cryptography Architecture) и дополнение к нему — пакет JCE (Java Cryptography Extension). Эти пакеты составлены из пакетов Java java. security, javax. crypto и их подпакетов, а также пакета com.sun.security и его подпакетов, содержащих средства генерации ключей, шифрования, создания дайджестов и цифровых подписей. Кроме того, 342 \ Разработка Web-служб средствами Java в Security API входит пакет javax.security.auth и его подпакеты, содержа щие средства аутентификации и авторизации и составляющие, вместе с дру гими пакетами Java, пакет JAAS (Java Authentication and Authorization Service).

Классы, составляющие средства Security API, реализуют криптографические алгоритмы DES, IDEA, DSA, MD5, SHA-1, RSA и другие, создают серти фикаты по протоколу Х.509, связывают приложения Java с системой безо пасности Kerberos.

Мы не будем здесь рассматривать Security API. Средства этого пакета подробно описаны в книге [13] и множестве других книг, посвященных безопасности Java. Текущая версия Security API полностью описана в документации к вашему набору J2SE SDK, в разделе $JAVA_HOME/docs/guide/security/.

Безопасность на транспортном уровне Сообщения Web-службы передаются по компьютерным сетям. Поэтому, казалось бы, для безопасности их пересылки достаточно применить средст ва сетевой безопасности. Одно из таких средств — протокол защищенных соединений SSL (Secure Sockets Layer), запатентованный в США фирмой Netscape Communication. Протокол работает поверх стека TCP/IP и основан на шифровании содержимого сетевых IP-пакетов с помощью симметричных или асимметричных ключей. Он описывает правила установления соедине ния, открытия защищенных сокетов, обмена ключами, шифрования и пере дачи данных. С ним тесно связан основанный на версии SSL 3.0 открытый протокол TLS (Transport Layer Secure), первая версия которого определена в рекомендации RFC 2246. Протокол TLS очень похож на SSL и призван за менить его, но эти протоколы несовместимы.

Протоколы SSL и TLS могут применять разные алгоритмы шифрования, в том числе DES, RSA, SHA-1, MD5, RC2, RC4. Это позволяет найти общий алгоритм для клиента и сервера и практически всегда установить защищен ное соединение. При этом алгоритмы шифрования с асимметричными клю чами применяются при установлении связи и передаче сгенерированного секретного ключа, а алгоритмы с симметричными ключами — для пересыл ки сообщений, зашифрованных полученным секретным ключом.

Технология Java реализовала протоколы SSL 3.0 и TLS в пакете JSSE (Java Secure Socket Extension). Соответствующие пакеты Java j a v a x. n e t. s s i, j a v a x. s e c u r i t y. c e r t входят в стандартную поставку J2SE SDK. Они под робно описаны в книге [13] и в документации J2SE SDK.

Средства SSL и TLS удобны и хорошо обеспечивают конфиденциальность передаваемых данных, но у них нет собственных средств аутентификации.

Они должны получать сертификаты из какого-нибудь центра сертификации.

Глава 8, Безопасность предоставления услуг Другое сетевое средство безопасности — виртуальная частная сеть VPN (Virtual Private Network) — не требует сертификатов. Оно передает сообще ния, зашифрованные на выходе из локальной сети маршрутизаторами или брандмауэрами. Аутентификация сообщений и клиентов производится маршрутизаторами или брандмауэрами на входе в локальную сеть. Вирту альные частные сети требуют установки программного обеспечения на каж дый сервер, маршрутизатор, брандмауэр и на каждую клиентскую машину, что вызывает обычные проблемы совместимости версий и необходимости их обновления на каждой машине.

Виртуальная частная сеть создается, чаще всего, на основе стандартов сете вого уровня IPSec, IPv6 или на основе протокола РРТР (Point-to-Point Tunneling Protocol).

Средства сетевой безопасности транспортного уровня могут использоваться при организации защищенных Web-служб, но сильно ограничивают их применение. Во-первых, эти средства привязывают Web-службу к опреде ленному протоколу: HTTPS, РРТР, SMTP, хотя основное достоинство Web службы — ее переносимость и независимость от протоколов и платформы.

Во-вторых, эти средства шифруют все пересылаемое сообщение целиком, а SOAP-послания по пути следования могут обрабатываться промежуточными SOAP-узлами (actors). При этом каждый промежуточный сервер должен расшифровать послание, обработать его и снова зашифровать для дальней шей пересылки. Ясно, что после этого ни о какой секретности говорить не приходится.

Безопасность на уровне XML Для того чтобы зашифровать не всё SOAP-послание, а только его отдельные части, придется перейти на уровень языка XML и пойти привычным пу тем — ввести дополнительные элементы XML, описывающие зашифрован ную часть послания.

Разработка средств описания зашифрованных XML-документов и их от дельных частей ведется консорциумом W3C давно и независимо от прото кола SOAP и Web-служб, причем этим занимается сразу несколько рабочих групп.

• Рабочая группа, определяющая правила описания шифрования документов XML, выпустила предварительную версию рекомендации "XML Encryption Syntax and Processing". Будем называть ее короче "XML Encryption". Ее можно посмотреть по адресу http://www.w3.org/TR/2002/xmlenc-core/.

• Рабочая группа, разрабатывающая правила работы с цифровыми подпи сями на языке XML, ее сайт http://www.w3.org/TR/xmldsig-core/, пред ложила две рекомендации: RFC 3275 описывает синтаксис цифровой 344 Разработка Web-служб средствами Java подписи, a RFC 3076 — так называемую каноническую форму XML (Canonical XML).

• Третья рабочая группа рассматривает работу с цифровыми сертифика тами и разрабатывает правила обмена ключами шифрования. Она разработала спецификацию XKMS (XML Key Management Specification) и работает над ее второй версией. Ее можно посмотреть на сайте http://www.w3.org/TR/xlms2/.

Рассмотрим подробнее эти рекомендации и спецификации.

Шифрование документов XML Документы XML или их отдельные элементы шифруются с использованием обычных алгоритмов криптографии. Задача состоит в том, чтобы выделить зашифрованную часть документа и описать способ ее шифрования.

Рекомендация "XML Encryption" вводит новый XML-элемент и вложенные в него элементы. Все элементы определены в пространстве имен с идентификатором http://www.w3.org/2001/04/xmlenc*.

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

Допустим, что в некотором XML-документе есть элементы XY-123456-27 и нам надо зашифровать элемент , содержащий секретный номер абонента. Это можно сделать двумя способами.

Первый способ — зашифровать только содержимое элемента:

Второй способ — зашифровать весь элемент :

Глава 8. Безопасность предоставления услуг Обратите внимание на то, как изменился атрибут туре, — вместо заключи тельного указания "content" атрибут содержит слово "Element".

Вообще же у элемента четыре необязательных атрибута:

• атрибут id содержит идентификатор элемента , полез ный для последующих ссылок на элемент;

• атрибут туре содержит тип зашифрованной информации в виде стро ки URI;

• атрибут MimeType указывает MIME-тип зашифрованной информации обычной строкой или строкой URI;

• атрибут Encoding указывает кодировку содержимого в виде строки URI.

Остальные атрибуты описывают идентификаторы пространств имен;

очень часто они выглядят так:

В элемент вкладываются четыре элемента.

• Элемент ОПИСЫВаеТ ЭЛГОрИТМ ШИфрО вания своим обязательным атрибутом Algorithm. В этот элемент можно вложить элемент , содержащий длину ключа. Можно вложить и другие элементы, например, для записи параметров алгоритма RSA ОАЕР специально предназначен вложенный элемент .

Элемент можно опустить, если алгоритм шифрова ния был оговорен заранее.

• Элемент описывает применяемые ключи шифрования.

Как видно из его префикса, он определен в пространстве имен с иден тификатором http://www.w3.org/2000/09/xmldsigS. Это пространство имен цифровой подписи, оно описано в следующем разделе. Дополнительно в этот элемент можно вложить элемент , описывающий метод шифрования ключа, если ключ шифруется, и элемент, описывающий метод обмена ключами.

• Элемент описывает сами зашифрованные данные.

346 Разработка Web-служб средствами Java • Элемент содержит дополнительную информа Ц Ю ВО вложенных В него элементах .

И Из этих элементов обязателен только элемент . Именно в нем, во вложенном в него элементе содержится зашифрованная информация. Это двоичная информация, но она записывается в кодировке Base64.

Таким образом, минимальный состав элемента примерно таков:

BNjivf7gTOXRRhdgB5h4JSxHJ7dlZudnZBrg= Вместо элемента В элемент МОЖНО ВЛОЖИТЬ элемент , указывающий расположение зашиф рованных данных своим атрибутом URI — строкой URI. В элемент МОЖНО ВЛОЖИТЬ элемент , а В него — один или несколько элементов , описывающих методы дополнительного преобразования извлеченной по ссылке зашифрованной информации. Например, извлеченную зашифрованную информацию можно переслать в кодировке Base64, для этого надо записать такое пре образование:

Глава 8. Безопасность предоставления услуг Структура элемента , описывающего зашифрованный ключ, повторяет структуру элемента с добавлением элемента , Вложенные В Который элементы и/или элементы своим атрибутом URI указывают идентификаторы (значения атрибутов id) элементов, использующих описы ваемый зашифрованный ключ.

Элемент описывает способ генерации ключей и обмена ими. Сторона, генерирующая ключ, описывается вложенным элементом , а сторона, получающая ключ — вложенным элемен том . Факт пересылки ключа отмечается вложенным элементом , чтобы не сгенерировать дважды один и тот же ключ.

Полная схема вложенности элементов показана в листинге 8.1.

- Листинг 8.1. Вложенность элементов шифрования [?] [?] [?] [?] [?] (? ] [?] [?] [?] Разработка Web-служб средствами Java | [?] [ ] * [ ] * [?] [?] [?] [?] I [?] Глава 8. Безопасность предоставления услуг [+] Цифровая подпись документа XML Правила создания цифровой подписи документа XML определены в реко мендации RFC 3275. Суть рекомендации в том, что создаются дайджесты подписываемой информации, они вкладываются в элемент вместе с нужными пояснениями. Затем создается дайджест этого элемента, который подписывается цифровой подписью. Элемент опре делен в спецификации RFC 3275.

Все это вкладывается в корневой элемент цифровой подписи , тоже определенный в рекомендации RFC 3275. Непосредственно в элемент вкладывается два обязательных элемента и , а также необязательный элемент и нуль или несколько элементов . Все элементы определены в пространстве имен с идентификатором http://www.w3.org/2000/09/xmldsigft.

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

Кроме того, элемент описывает подписываемую информа цию, это делается третьим обязательным вложенным элементом .

Элемент указывает способ приведения элемен та к каноническому виду XML. Способ указывается обяза тельным атрибутом Algorithm. В этот элемент можно вложить произволь ные элементы, характерные для данного метода приведения к канониче скому виду.

Элемент указывает алгоритм шифрования элемента . Алгоритм указывается Обязательным атрибутом Algorithm, например:

Здесь указан комбинированный алгоритм шифрования DSA-SHA1.

В элемент можно вложить произвольные элементы, ха рактерные для выбранного алгоритма шифрования.

350 Разработка Web-служб средствами Java Элемент может появиться несколько раз, поскольку подписы ваемая информация может состоять из нескольких документов XML, доку ментов HTML или их частей, файлов с графическими изображениями, зву ковых файлов и других ресурсов. Каждый ресурс, которым может быть и часть документа, описывается своим элементом и указывается атрибутом URI этого элемента, например:

В этом примере создается дайджест части внешнего документа inv.xml. По лученная цифровая подпись (detached signature) хранится отдельно от под писанного документа.

Цифровая подпись может быть вложена в сам подписываемый документ (enveloped signature). В этом случае ссылка будет выглядеть так:

Для каждого ресурса создается свой дайджест.

Каждый элемент содержит необязательный вложенный эле мент , задающий вложенными элементами мето ды предварительного преобразования подписываемого ресурса, например, преобразование к каноническому виду XML. Кроме того, элемент должен содержать два обязательных элемента: элемент указывает алгоритм получения дайджеста обязательным ат рибутом Algorithm, а элемент содержит дайджест в кодиров ке Base64. Например:

j61wx3rvEPO0vKtMup4NbeVu8nk= Здесь для получения дайджеста файла sign.xml выбран алгоритм SHA-1.

Файл sign.xml предварительно приводится к каноническому виду XML.

Элемент содержит цифровую подпись в кодировке Base64.

Элемент описывает информацию об открытом ключе, с помощью которого проверяется подпись. Ключом может быть и цифровой сертифи кат. Элемент может отсутствовать, если получателю известен ключ. Информация содержится во вложенных элементах, некоторые эле менты определены спецификацией. Это элементы , , , , , , . АвТО ры цифровых подписей могут добавить другие элементы.

Глава 8. Безопасность предоставления услуг Элементы определяют дополнительные свойства цифровой подпи си, например, дату и время подписания, элементами , и другими элементами.

Листинг 8.2 показывает схему вложенности элементов, описывающих циф ровую подпись.

Листинг 8.2. Вложенность элементов цифровой подписи [+] [?] [+] [?] ( I I I I I I ) [+] [*] 352 Разработка Web-служб средствами Java [+] [+] Канонический вид XML При создании цифровой подписи имеет значение каждый символ подписы ваемого документа. Даже разное количество пробелов между словами при ведет к разным цифровым подписям. Для того чтобы цифровая подпись зависела только от содержания документа, но не от его оформления, доку мент сначала приводится к каноническому виду, а потом подписывается.

Метод приведения к каноническому виду указывается атрибутом элемента .

Канонический вид документа XML и правила приведения к нему описаны в рекомендации RFC 3076, называемой "Canonical XML". По рекомендации RFC 3076 документ записывается в кодировке UTF-8, все ссылки разреша ются, пробельные символы нормализуются, заголовки XML удаляются, пус тые элементы записываются парой из открывающего и закрывающего тега, записываются значения по умолчанию всех опущенных атрибутов и так да лее. Если приведение к каноническому виду выполнено по этой рекоменда ции, то элемент должен выглядеть так:

Средства Java для шифрования XML Фирма IBM выпустила пакет интерфейсов и классов XSS4J (XML Security Suite for Java), реализующих спецификацию "XML Encryption", рекоменда ции RFC 3275, RFC 3076, методы авторизации и получения сертификатов, методы приведения к каноническому виду. Пакет XSS4J можно свободно скопировать, он доступен по адресу http://www-106.ibm.com/developerworks/webservices/library/xinlsecuritysuite/.

Глава 8. Безопасность предоставления услуг Для применения классов и интерфейсов пакета XSS4J достаточно добавить полученный при копировании архив xss4j.jar в библиотеку классов J2SE SDK, например, в каталог $JAVA_HOME/jre/lib/ext/, или добавить путь к архиву в переменную CLASSPATH. Пакет XSS4J требует для своей работы на личия стандартного Java Security API, входящего в состав J2SE SDK. Кроме того, нужен XML-анализатор, например, Apache Xerces2, и XSLT процессор, например, Apache Xalan-J. Пакет XSS4J входит в состав не раз упоминавшегося в этой книге набора IBM WSTK и в состав интегрирован ной среды разработки IBM WebSphere Studio.

Сообщество Apache Software Foundation выпустило пакет "Apache XML Security", доступный по адресу http://xml.apache.org/security/. В него входят средства шифрования, реализующие спецификацию "XML Encryption", и средства создания цифровой подписи по рекомендациям RFC 3275 и RFC 3076. Пакет можно использовать отдельно или в составе других инст рументальных средств XML. Он входит, например, в набор средств создания Web-служб Apache Axis, рассмотренный нами в главе 3.

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

Перед тем как запустить клиентскую программу следует сгенерировать клю чи и сертификат и записать их в стандартное хранилище ключей Java — файл.keystore. Это можно сделать утилитой keytool из набора J2SE SDK, набрав следующую командную строку:

keytool -genkey и ответив на вопросы утилиты.

:

: Листинг 8.3. Клиент Web-службы, отправляющий подписанное SOAP-послание import org.apache.axis.*;

import org.apache.axis.client.*;

import org.apache.axis.message.*;

import org.apache.axis.utils.*;

import org.apache.axis.configuration.NullProvider;

import org.apache.axis.encoding.*;

import org.apache.xml.security.cl4n.Canonicalizer;

import org.apache.xml.security.signature.XMLSignature;

import org.w3c.dom.*;

import org.xml.sax.InputSource;

import j ava.io.*;

354 Разработка Web-служб средствами Java import j ava.security.*;

import Java.security.cert.X509Certificate;

public class ClientAxis{ static SOAPEnvelope env = new SOAPEnvelope();

public static void main(String[] args){ if (args.length != 3){ System.err.println("Usage: Java ClientAxis" + " " + " ");

System.exit(0);

try{ Options opts = new Options(args);

Service service = new Service ();

Call call = (Call)service.createCall();

call.setTargetEndpointAddress( new j ava.net.URL(opts.getURL()) ) ;

SOAPBodyElement sbe = new SOAPBodyElement( XMLUtils.StringToElement( "http://localhost:8080/EchoService", "getName", ""));

env.addBodyElement(sbe);

sign(args[0], args[l], args[2]);

System.out.println("\nRequest: ");

XMLUtils.PrettyElementToStream(env.getAsDOMO, System.out);

call.invoke(env);

MessageContext me = call.getMessageContext();

Глава 8. Безопасность предоставления услуг System.out.println("\nResponse: ");

XMLUtils.PrettyElementToStream( me.getResponseMessage().getSOAPEnvelope().getAsDOM(), System.out);

}catch(Exception e) { e.printStackTrace ();

private static void sign(String keystorePassword, String privateKeyPassword, String certificateAlias){ try{ env.addMapping(new Mapping( "http://schemas.xmlsoap.org/soap/security/2000-12", "SOAP-SEC"));

env.addAttribute(Constants.URI_SOAP11_ENV, "actor", "some-uri");

env.addAttribute(Constants.URI_SOAP11_ENV, "mustUnderstand", "1");

SOAPHeaderElement header = new SOAPHeaderElement( XMLUtils.StringToElement( "http://schemas.xmlsoap.org/soap/security/2000-12", "Signature", ""));

env.addHeader(header);

Document doc = soap2dom(env);

KeyStore ks = KeyStore.getlnstance("JKS");

FilelnputStream fis = new FileInputStream(".keystore") ;

ks.load(fis, keystorePassword.toCharArray());

PrivateKey privateKey = (PrivateKey)ks.getKey("mykey", 356 Разработка Web-служб средствами Java privateKeyPassword.toCharArray());

Element soapHeaderElement = (Element)((Element)doc.getFirstChild()).

getElementsByTagNameNS("*", "Header").item(O);

Element soapSignatureElement = (Element)soapHeaderElement.

getElementsByTagNameNS("*", "Signature").item(O);

XMLSignature sig = new XMLSignature(doc, "http://xml-security", XMLSignature.ALGO_ID_SIGNATURE_DSA);

soapSignatureElement.appendChild(sig.getElement());

sig.addDocument("#Body");

X509Certificate cert = (X509Certificate)ks.getCertificate(certificateAlias);

sig.addKeylnfo(cert);

sig.addKeylnfo(cert.getPublicKey());

sig.sign(privateKey);

Canonicalizer cl4n = Canonicalizer.getlnstance( Canonicalizer.ALGO_IDJ^4N_WITH_COMMENTS);

byte[] canonicalMessage = cl4n.canonicalizeSubtree(doc);

InputSource is = new InputSource( new Java.io.ByteArraylnputStream(canonicalMessage));

DeserializationContextlmpl dser = null;

AxisClient tmpEngine = new AxisClient(new NullProvider());

Глава 8. Безопасность предоставления услуг MessageContext msgContext = new MessageContext(tmpEngine);

dser = new DeserializationContextlmpl(is, msgContext, Message.REQUEST);

dser.parse();

}catch(Exception e) { e.printStackTrace() ;

throw new RuntimeException(e.toString());

private static Document soap2dom(S0APEnvelope env) throws Exception{ StringWriter writer = new StringWriter();

SerializationContextlmpl ctx = new SerializationContextlmpl(writer);

env.output(ctx);

writer.close();

Reader reader = new StringReader(writer.getBuffer().toString() Document doc = XMLUtils.newDocument(new InputSource(reader));

if (doc == null) throw new Exception();

return doc;

Существует еще много коммерческих и свободно распространяемых средств шифрования документов XML. Каждый месяц появляются новые средства, их списки можно просмотреть на сайтах Интернета, посвященных XML.

Безопасность SOAP-посланий Поскольку SOAP-послание представляет собой документ XML, к нему при менимы все средства обеспечения безопасности, перечисленные в преды 358 Разработка Web-служб средствами Java дущих разделах этой главы. Ничто не мешает зашифровать все послание целиком или его отдельные части, например, тело послания, или отдельные элементы XML, входящие в послание. SOAP-послание можно снабдить цифровой подписью как обычный документ XML.

Тем не менее, SOAP-послания следует составлять так, чтобы их могла про читать и обработать любая Web-служба, имеющая право на это. Поэтому необходимы правила шифрования и подписи SOAP-посланий, единые для всех Web-служб. Такие правила разрабатываются как расширения протокола SOAP.

Первое расширение протокола SOAP, посвященное вопросам безопасно сти, было сделано фирмой IBM еще в 2000 году. Документ под названием "SOAP Security Extensions" опубликован в Интернете по адресу http://www.trl.ibni.com/projects/xinl/soap/wp/wp.html. Он посвящен шифро ванию, цифровой подписи и авторизации и вводит три соответствующих элемента XML , И В простран стве имен с идентификатором http://schemas.xmlsoap.org/soap/security/. Эти элементы записываются как блоки заголовка

SOAP-послания.

Элемент Содержит Вложенные Элементы , определенные в устаревшей версии спецификации "XML Encryption" с идентификатором пространства имен http://www.w3.org/2000/10/xmlenc. По этому этот элемент вряд ли будет использоваться в современных SOAP посланиях.

Элемент содержит вложенный элемент , опре деленный в спецификации "XML Signature" с идентификатором пространст ва имен http://www.w3.org/2000/02/xmldsig*. Он не изменился со времени создания расширения "SOAP Security Extensions" и вполне может приме няться в SOAP-посланиях.

У третьего элемента нет четкой структуры, в него можно вложить произвольные элементы, идентифицирующие автора послания.

Второе расширение протокола SOAP, сделанное фирмами IBM и Microsoft в феврале 2001 года, посвящено созданию цифровой подписи. Оно называ ется "SOAP Security Extensions: Digital Signature" и доступно по адре-су http://www.w3.org/TR/SOAP-dsig/. Расширение уточняет элемент , определенный в предыдущем расширении "SOAP Security Extensions". Уточненный элемент , принадлежащий пространст ву имен с идентификатором http://schemas.xmlsoap.org/soap/security/2000-12, тоже содержит вложенный элемент , но последний элемент определен в более новом пространстве имен с идентификатором http://www.w3.org/2000/09/xmldsig*.

Кроме того, расширение "SOAP Security Extensions: Digital Signature" задает Правила включения Элемента В заголовок

SOAP Глава 8. Безопасность предоставления услуг послания, и правила его обработки промежуточными серверами и Web службами.

Наконец, в июле 2002 года появилось новое расширение протокола SOAP — спецификация "WS-Security", разработанная фирмами IBM, Microsoft и VeriSign. Остановимся на ней подробнее.

Спецификация "WS-Security" Спецификация "Web Services Security", сокращенно "WS-Security", доступна по адресу http://www-106.ibm.com/developerworks/webservices/ library/ws-secure/. Несмотря на свое название, она не вносит какие-то новые правила шифрования или аутентификации. Она определяет всего один элемент в пространстве имен с идентификатором http://schemas.xmlsoap.org/ ws/2002/04/secext.

Сразу же после выхода спецификации "WS-Security", в августе 2002 года, поя вилось приложение к ней, названное "WS-Security Addendum". Его можно посмотреть по адресу http://msdn.microsoft.com/webservices/. Оно изменило идентификатор пространства имен, теперь это http://schemas.xmlsoap.org/ ws/2002/07/secext. В приложении исправлены мелкие ошибки и сделаны не которые дополнения к спецификации "WS-Security".

У элемента , определенного в спецификации "WS-Security", мо жет быть любое число любых атрибутов. В него можно вложить произволь ные элементы XML, В Т М ЧИСЛе элементы , , О, определенные в расширениях протокола SOAP. Можно не использовать эти элементы, а вложить непосредственно элементы , , определенные в спецификации "XML Encryption" и в рекомендации RFC 3275. Спецификация определяет и неко торые дополнительные элементы, которые можно вложить в элемент , и блоки заголовка SOAP-послания. Главное же в специфика ции "WS-Security" то, что она расширяема, и в ее расширениях можно опре делять конкретные элементы.

Для аутентификации пользователя по его имени и паролю спецификация определяет Элемент С вложенными Элементами <0sername> и . Необязательный атрибут туре элемента указывает тип записи пароля. Пока он принимает всего два значения: значение по умолчанию "PasswordText" — пароль записывается открытым текстом, и значение "PasswordDigest" — записывается дайджест пароля в кодировке Base64. Дайджест создается по алгоритму SHA-1.

Приложение к спецификации добавило два необязательных вложенных элемента, применяемых при создании дайджеста пароля: элемент содержит одноразовый 16-байтовый пароль, включаемый в дайджест, эле 360 Разработка Web-служб средствами Java мент содержит дату и время создания пароля, которые тоже включаются в дайджест. Вот полный пример заголовка SOAP-послания с записью о пользователе:

Ivan vb2zDRGHjopcDfXn4Beg6Unm4Hm= 5uW4ABku/m6/S5rnE+L7vg== 2002-11-13T09:00:OOZ Глава 8. Безопасность предоставления услуг Для хранения двоичной информации, скажем, сертификата, спецификация "WS-Security" определяет элемент . Вот, например, сертификат, полученный по протоколу Х.509, и записанный в кодировке Base64:

MIIEZzCCA9CgAwIBAgIQEmtJZcO...

Спецификация, точнее, приложение к ней, рекомендует хранить сертифика ты именно в элементе , а не в элементе .

Защищаемые элементы могут располагаться не только внутри элемента , но и в другом месте SOAP-послания, и даже в другом месте Интернета. В таком случае в элемент вкладывается определен ный В Спецификации элемент , В КОТОРЫЙ ВКЛа дываются элементы со ссылками на защищаемые ресурсы.

Ссылки даются в виде строки URI в атрибуте URI. Например:

MIIEZzCCA9CgAwIBAgIQEmtJZcO...

362 Разработка Web-служб средствами Java Элемент Призван заменить Собой элемент , обычно вкладываемый в элемент при создании цифровой подписи.

Элемент разрешается вкладывать не только в элемент , но и в элементы цифровой подписи.

Сам элемент рекомендуется вкладывать непосредственно в Элемент , а не В элемент . Этот эле мент определен в другом пространстве имен с идентификатором http://schemas.xmlsoap.org/ws/2002/07/utility.

В элемент вкладываются элементы , И с датой и временем создания, сроком действия и временем об работки SOAP-послания промежуточным сервером. Дата и время относятся к типу dateTime языка XSD. Их рекомендуется отсчитывать по правилам UTC, в противном случае следует использовать атрибут vaiueType, в кото ром надо записать тип, описанный в схеме XML. Например:

2002-ll-13T08:42:00Z 2002-12-13T09:00:00Z 2002-ll-13T08:44:00Z Глава 8. Безопасность предоставления услуг Что дальше?

Как видно из предыдущего раздела, спецификация "WS-Security" определяет только самые общие правила составления блоков заголовка SOAP-послания, обеспечивающих безопасность SOAP-послания. Конкретные правила долж ны быть определены в расширениях этой спецификации. Корпорации IBM и Microsoft работают над дальнейшим развитием и детализацией правил обеспечения безопасности Web-служб. В настоящее время разрабатываются следующие спецификации, расширяющие спецификацию "WS-Security":

• Спецификация "WS-Policy" описывает методы проведения той или иной политики безопасности. Она определяет ограничения доступа, форматы кодирования, используемые алгоритмы шифрования, форматы файлов политики. Спецификация расширяема и может быть дополнена новыми элементами.

• Спецификация "WS-Trust" описывает методы установления доверитель ных отношений между Web-службами, их клиентами и посредниками.

G Спецификация "WS-Privacy", совместно со спецификациями "WS Security", "WS-Policy" и "WS-Trust", определяет правила сохранения ком мерческой тайны предприятия или учреждения при обмене SOAP посланиями.

В дальнейшем IBM и Microsoft планируют выпустить следующий слой спе цификаций, основанных уже на спецификациях "WS-Policy", "WS-Trust" и "WS-Privacy". Новые спецификации призваны конкретизировать и расши рить требования предыдущих спецификаций.

• Спецификация "WS-Secure Conversation" будет описывать правила обме на конфиденциальной информацией, аутентификации сообщений, соз дания ключей и обмена ими.

• Спецификация "WS-Federation" будет рассматривать доверительные от ношения в разнородных средах и в распределенных приложениях.

• Спецификация "WS-Authorization" создаст стандарт для авторизации клиентов и сообщений.

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

ГЛАВА Развитие Web Services Раз вы дочитали книгу до этого места, значит, поняли, что технология Web Services только начинает развиваться. Плодотворная идея предста вить информацию в виде документов XML и пересылать ее по Интерне ту, используя только протокол HTTP, находит множество воплощений.

Десятки фирм и рабочих групп активно развивают эту технологию. Бук вально каждую неделю появляются новые программные продукты и но вые версии старых продуктов. То и дело обновляются протоколы и спе цификации Web Services и возникают новые спецификации. Расширяется сфера применения Web Services, все больше фирм создают у себя Web службы.

В этой главе я постараюсь дать обзор новейших тенденций развития техно логии Web Services. Посмотрим сначала, как развиваются "три кита", на ко торых стоят Web-службы — протоколы SOAP, WSDL и UDDI.

Протокол SOAP Близится к завершению работа над версией 1.2 протокола SOAP. Сейчас, когда вы читаете эти строки, уже должна выйти ее окончательная редакция.

Описание протокола, сделанное в главе 3, основано на черновой редакции SOAP 1.2, опубликованной в июне 2002 года. Не думаю, что эта редакция будет сильно изменена, поскольку всякие дополнения к протоколу сейчас оформляются в виде отдельных документов — расширений (extensions) про токола SOAP.

В версию SOAP 1.2 внесено много мелких изменений: исключен атрибут encodingstyie из корневого элемента , атрибут actor заменен Глава 9. Развитие Web Services атрибутом role, значения атрибута mustunderstand записываются словами " t r u e " и "false". Введены новые элементы и атрибуты, исключен HTTP заголовок SOAPAction, определен Н В Й MIME-ТИП application/soap+xml, ОЫ изменено содержимое элемента . Все это подробно изложено в главе 3.

Пока не выпущена окончательная редакция SOAP 1.2, производители про граммных продуктов, реализующих протокол SOAP, вынуждены основы вать их на версии SOAP 1.1. Впрочем, уже в первой версии Apache Axis реализовано большинство конструкций SOAP 1.2. Как только версия 1. будет утверждена, производители сразу же воплотят ее в новых версиях своих продуктов.

Протокол SOAP, по-видимому, будет в дальнейшем заменен общим про токолом пересылки любых документов XML, названным "XMLP" (XML Protocol). Но разработка этого протокола сильно затянулась, она еще не вышла из начальной стадии. Вероятнее всего, Web-службы еще некоторое время будут действовать в рамках протокола SOAP 1.2. Его текущее со стояние и процесс разработки можно посмотреть на сайте http://www.w3.org/TR/xp/.

Описание на языке WSDL Во время написания книги действовала версия 1.1 языка описания Web служб WSDL, но в июле 2002 года был опубликован черновой вариант вер сии WSDL 1.2. Он доступен по адресу http://www.w3.org/TR/wsdll2.

Основные цели новой версии — привести язык WSDL в соответствие с тре бованиями схемы XML и описать связь языка с версией SOAP 1.2. Кроме этого, в новую версию введены некоторые новые атрибуты, устаревшие ат рибуты сделаны необязательными, уточнены многие правила описания Web-служб. Описание языка WSDL, сделанное в главе 4, основано на вер сии WSDL 1.2.

Несмотря на появление версии WSDL 1.2, ее внедрение произойдет еще не скоро. С одной стороны, судя по скорости разработки спецификации, ее окончательная редакция в ближайшее время не выйдет. С другой стороны, выпущено уже очень много программных средств, автоматически генери рующих WSDL-описания Web-служб и создающих клиентские приложения по этим описаниям. Все эти средства основаны на WSDL 1.1. Будет нелегко в кратчайший срок перевести их на новую версию.

Текущее состояние языка WSDL непрерывно отражается на сайте http://www.w3.org/ws/desc/.

366 Разработка Web-служб средствами Java Реестр UDDI Реестры UDDI пока создаются и развиваются, основываясь на специфика ции UDDI 2.0, изложенной в нескольких документах. В июле 2002 года вышла версия 3.0 спецификации UDDI. Она записана в одном документе "UDDI Version 3.0 Published Specification", доступном по адресу http://uddi.org/pubs/uddi_v3.htm.

По новой спецификации можно зарегистрировать данные сразу в несколь ких реестрах, для чего введено понятие присоединенных (affiliate) реестров и изменен формат записи ключей. Усилена безопасность хранящихся в рее стре сведений. В частности, реестры теперь могут хранить сведения, подпи санные цифровой подписью. Новая спецификация позволяет реестру опре делить политику обработки хранящихся в нем сведений. Для этого введен элемент operationalinfo. Реестр теперь обеспечивает интернационализа цию хранящихся в нем сведений.

Спецификация UDDI 3.0 вносит и другие изменения в структуру сведе ний, хранящихся в реестре, например, введены дополнительные правила поиска и сортировки с помощью шаблонов. Обеспечена согласованность документов UDDI с описанием Web-службы, сделанном на языке WSDL.

Значительно расширен интерфейс UDDI API, в него внесено много новых функций. Эти изменения приведены в главе 5, описывающей версию UDDI 3.0.

Полное внедрение версии UDDI 3.0 связано с большими трудностями — надо привести в соответствие с ней огромное количество информации, уже хранящейся в реестрах UDDI. Поскольку версия 3.0 только расширяет вер сию 2.0, почти ничего в ней не меняя, владельцы реестров и поставщики программного обеспечения идут проверенным путем. Они выпускают и внедряют продукты, совместимые со старыми версиями UDDI.

Текущее состояние дел по разработке спецификации UDDI всегда можно посмотреть на сайте http://www.uddi.org/.

Фирменные разработки Правила создания и функционирования Web-служб описываются не только протоколом SOAP, языком WSDL и реестром UDDI. Определение Web Services, приведенное в главе 2, вообще ничего не говорит об этих "трех ки тах". Оно даже не упоминает протокол HTTP. По этому определению для Web-служб характерно только использование документов XML и технологии WWW. Многие фирмы создают свои протоколы и спецификации Web служб, основанные лишь на XML и WWW. В предыдущих главах уже упо минались протоколы и спецификации XML-RPC, DIME, WS-Routing, WS Глава 9. Развитие Web Services Inspection, WS-Security. Большинство нововведений принадлежит фирмам IBM и Microsoft и сообществу OASIS. Познакомимся подробнее с их дея тельностью.

Наибольшую активность в развитии Web Services, пожалуй, проявляет фир ма IBM. Она разработала и активно внедряет несколько новых специфика ций, ориентированных, главным образом, на организацию деловых связей и получения из них единого бизнес-процесса.

Язык описания потоков работ WSFL Язык описания потоков работ WSFL (Web Services Flow Language) создан фирмой IBM с двумя целями: описать последовательность обработки ин формации несколькими Web-службами, образующую бизнес-процесс (flow model), и описать взаимодействие Web-служб в этом процессе (global model). Для этого устанавливаются связи между SEI-интерфейсами взаимо действующих Web-служб. При этом активно используется WSDL-описание этих Web-служб.

Спецификация WSFL опубликована в документе http://www-4.ibm.com/ software/solutions/webservices/pdf/WSFL.pdf.

Описание WSFL выполняется в виде документа XML с корневым элемен том , в который вкладывается любое число необязательных элементов , описывающих поток информации, и элементов , описывающих взаимные связи Web-служб. Кроме того, в корневой элемент можно вложить необязательные элементы и .

Бизнес-поток описывается элементами, вложенными в элемент .

Начало потока указывается элементом , конец потока — эле ментом . Элементы ОПИСЫВаюТ Web-СЛужбы, вовлеченные в поток, а элементы — операции, выполняемые этими Web-службами. Операции связаны либо по управлению, либо по об рабатываемым данным. Связь по управлению описывается элементом , связь по данным — элементом . Имена входящей в эту связь и выходящей из нее Web-службы задаются атрибутами source и target этих элементов.

Взаимодействие Web-служб описывается элементами, вложенными в эле мент . Сами Web-службы описываются элементами , а связи между ними — элементами , в кото рые вкладываются элементы и , описывающие две Web службы, между которыми устанавливается связь.

В листинге 9.1 приведена схема вложенности элементов языка WSFL.

368 Разработка Web-служб средствами Java ' Листинг 9.1. Вложенность элементов языка WSFL * d e f i n i t i o n s name=""> [*] [*] [*] [*] [ ] * [?] [?] [+] [ ] * [?] [?] [ ] * Глава 9. Развитие Web Services [?] •csource portType="" operation="" /> [?] [?] [?] [?] [ ] * I I [ ] * [ ] * OerviceProvider name="" serviceProviderType="">. 370 Разработка Web-служб средствами Java Как видно даже из такого краткого описания, язык WSFL позволяет опи сать во всех подробностях последовательную обработку SOAP-посланий не сколькими Web-службами.

Корпорация Microsoft создала свой язык описания бизнес-процессов, непохожий на язык WSFL. Он называется XLANG и разработан для сер вера BizTalk. С языком XLANG можно ознакомиться на сайте http://msdn.microsoft.com/library/.

Язык описания бизнес-процессов BPEL4WS Фирма IBM откликнулась на язык XLANG созданием языка BPEL4WS (Business Process Execution Language for Web Services), призванного объеди нить языки WSFL и XLANG. Спецификация языка BPEL4WS доступна по адресу http://www-106.ibm.com/developerworks/library/ws-bpel/.

Язык BPEL4WS создает композицию Web-служб, участвующих в бизнес процессе, и описывает ее как одну Web-службу элементами языка WSDL. Такая композиция называется процессом BPEL4WS и записы вается в теле элемента . Каждый шаг процесса называется дейст вием (activity). В число действий входит обращение к какой-либо Web службе для выполнения Web-услуги , ожидание результата , получение запроса от клиента , создание ответа , копиро вание данных.

Глава 9. Развитие Web Services Действия, описанные элементами , , , , , позволяют задать сложный нелинейный алгоритм обработки данных Web-службами, входящими в процесс BPEL4WS.

Действия и позволяют обработать исключительные ситуа ции, возникающие при выполнении других действий, основываясь на эле ментах описания WSDL.

Процесс BPEL4WS описывается, как всякая Web-служба, документом WSDL, в который записываются дополнительные элементы , определенные в пространстве имен с идентификатором http://schemas.xmlsoap.org/ws/2002/07/service-link/. Эти элементы вкладыва ются непосредственно в корневой элемент WSDL-описания.

Они содержат один или два элемента , содержащих ссылки на WSDL-описание тех Web-служб, которые выполняют действия, составляю щие процесс.

Само же описание Web-служб, выполняющих действие, производится эле ментами , вложенными в элемент , который, в свою очередь, вкладывается в элемент .

В листинге 9.2 показана схема вложенности элемента .

Листинг 9.2. Элемент языка BPEL4WS [?] [?] [+] [ ] * [?] [*] [?] [?] •ccorrelationSet name="" properties=""> [+] | <Действия> [ ] * [ ] * [+] [ ] * [] * Глава 9. Развитие Web Services [?] [ ] * [+] [?] [ ] * [?] [ ] * [ ] * [+] [?] 374 Разработка Web-служб средствами Java [*] Фирма IBM активно продвигает язык BPEL4WS в качестве стандарта для описания взаимодействия Web-служб в бизнес-процессах. Она уже выпус тила программный продукт BPWS4J, реализующий спецификацию BPEL4WS. Кроме интерфейсов и классов, реализующих BPEL4WS, в состав продукта входят примеры описаний на языке BPEL4WS, простой редактор для создания файлов с описаниями BPEL4WS, утилиты для проверки доку ментов BPEL4WS. Пакет BPWS4J свободно доступен по адресу http://www.alphaworks.ibm.cora/tech/bpws4j/.

Спецификация WS-Coordination Спецификация WS-Coordination, разработанная фирмами IBM, Microsoft и BEA Systems, описывает самые общие правила взаимодействия компонентов распределенного приложения, которые можно затем детализировать други ми, более конкретными спецификациями. Ее можно посмотреть на сайте http://www.ibm.com/developerworks/library/ws-coor/.

Компоненты распределенного приложения [10] часто работают на разном, плохо совместимом оборудовании и используют самые разные протоколы.

Для координации их деятельности создаются специальные согласующие про токолы (coordination protocols). Главная задача спецификации — установить общие правила регистрации и активизации согласующих протоколов. Эту задачу должна решить Web-служба координации (coordination service). Она содержит в себе службу активизации и службу регистрации. У каждого ком понента может быть своя Web-служба координации.

Web-служба координации активизируется при получении SOAP-послания от клиента с блоком заголовка . При этом про исходит обращение к службе активизации, адрес порта которой записан во вложенном элементе. Еще два вложенных элемента И ОПИСЫВЭЮТ ТИП согласующего протокола и адрес клиента, приславшего запрос. Эти элементы и другие элементы, введенные в спецификацию, определены в пространстве имен с идентификатором http://schemas.xmlsoap.org/ws/2002/08/wscoor.

После активизации Web-служба координации посылает ответное SOAP ПОСЛЭНИе С блоком заголовка , В КО торый вложен элемент , а также элемент , содержащий сведения о созданном контексте Web службы координации, в частности, ее адрес.

Глава 9. Развитие Web Sen/ices В каждое SOAP-послание, использующее Web-службу координации, вставляется блок заголовка . В элемент вкладывается Элемент , ОПИСЫ ваЮЩИЙ ТИП Согласующего Протокола, И Элемент , В котором, во вложенном элементе, записывается URI-адрес порта Web-службы координации.

Получив ответ, клиент регистрируется в Web-службе координации с помо щью службы регистрации. Для этого он посылает Web-службе SOAP послание с блоком заголовка , в который вложен элемент с содержимым, полученным от Web-службы коор динации, и элемент , который указывает тип согласующего протокола. Кроме того, вкладывается элемент , в котором указан адрес Web-службы, реа лизующей согласующий протокол, выбранный клиентом, и уже знакомый элемент .

На это Web-служба координации отвечает SOAP-посланием с блоком за головка , содержащим элемент и элемент , содержащий адрес Web службы, реализующей согласующий протокол, выбранный Web-службой координации.

После регистрации происходит взаимодействие Web-служб, автоматически использующее согласующие протоколы.

Спецификация WS-Coordination ничего не говорит о согласующих протоко лах и способах реализации Web-службы координации. Это должны сделать другие спецификации. Одна из таких спецификаций — спецификация WS Transaction, описывающая тип согласующего протокола, устанавливающего правила создания и выполнения транзакций.

Спецификация WS-Transaction Спецификация WS-Translation, созданная фирмами IBM, Microsoft и ВЕА Systems, предлагает две модели, детализирующие правила WS-Coordination:

модель недолговременной транзакции с ограниченным числом участников AT (Atomic Transaction) и модель долговременной транзакции с большим числом участников ВА (Business Activity). Спецификация представлена на сайте http://www.ibm.com/developerworks/library/ws-transpec/.

Модель AT управляет одной транзакцией по принципу "все или ничего". Со гласующий протокол транзакции регистрируется по правилам спецификации WS-Coordination. В элементе , определяющем тип согласующего протокола, указывается строка http://schemas.xmlsoap.org/ ws/2002/08/wstx. Спецификация устанавливает правила завершения и от 376 Разработка Web-служб средствами Java ката транзакции, например, предлагается двухфазная фиксация [10] тран закции.

После регистрации согласующего протокола по правилам спецификации WS-Coordination, клиенты начинают управление транзакцией, записывая в SOAP-ПОСЛаниях элементы , , , , , , определенные в пространстве имен с иден тификатором http://schemas.xmlsoap.org/ws/2002/08/wstx. Web-служба коор динации отвечает SOAP-посланиями с элементами ,, , , , . В каждый ИЗ этих элементов вкладываются элементы и , содержащие адреса портов Web-служб, реали зующих соответствующие протоколы. Для создания и выполнения транзак ции в рамках Web-службы координации создаются соответствующие служ бы, выполняющие описанные этими элементами действия.

Модель ВА охватывает, как правило, несколько транзакций, образующих бизнес-процесс, описанный, возможно, на языке BPEL4WS. Во время акти визации и регистрации, в элементе , опреде ляющем тип согласующего протокола, указывается строка http://schemas.xmlsoap.org/ws/2002/08/wstx.

Модель ВА задает правила распределения ресурсов между участниками биз нес-процесса и правила освобождения ресурсов, не используемых ими. Для этого спецификация WS-Transaction определяет элементы , , , , , используемые Web-службой координации для опроса участников бизнес-просесса, и элементы , , , , , , при меняемые участниками бизнес-процесса для ответа. Все эти элементы опреде лены в пространстве имен с идентификатором http://schemas.xmlsoap.org/ ws/2002/08/wsba. Получив ответ участника, Web-служба координации распо ряжается ресурсами.

Деятельность организации WS-I Список протоколов и спецификаций Web Services далеко не ограничен пе речисленными выше документами. Можно назвать еще множество аббре виатур, относящихся к Web-службам: SAML, WSXL, WSCL, WSCM, WSEL, WSML, WSUI, WS-License, WS-Referral. Пока я их перечисляю, возникают новые спецификации. Такую тенденцию необходимо упорядочить и стан дартизировать. С этой целью весной 2002 года по инициативе IBM и Microsoft была создана организация, названная "Web Services Interoperability Organization", сокращенно WS-I. Ее целью была провозглашена выработка стандартов, обеспечивающих совместимость программных продуктов разных Глава 9. Развитие Web Services производителей, относящихся к разным платформам, операционным систе мам и языкам программирования. К организации WS-I уже примкнули все крупные производители компьютерного оборудования и программного обеспечения. Официальный сайт организации http://www.ws-i.org/.

Организация WS-I вырабатывает четыре типа документов: профили взаимо действия, инструменты для тестирования, образцы применения и примеры приложений, построенных по этим образцам.

Профиль взаимодействия (interoperability profile) или просто профиль — это набор протоколов и/или спецификаций, взятых в определенный момент их развития, вместе с правилами их наилучшего использования. Профиль со держит готовое проверенное решение, которое могут сразу применить соз датели Web-служб.

Основой для первого профиля, разработанного организацией WS-I, послужил набор взаимодействующих протоколов и спецификаций XML Schema 1.0, SOAP 1.1, WSDL 1.1 и UDDI 1.2. Этот профиль назван "WS-Basic".

Профиль WS-Basic Профиль WS-Basic Profile создан фирмами IBM, Microsoft и BEA Systems.

http://www.ws Его черновая версия опубликована на странице i.org/Proffles/Basic/2002-lO/BasicProfile-l.O-WGD.htm. Профиль рассматри вает четыре группы вопросов: пересылку SOAP-посланий, описание WSDL, регистрацию UDDI и безопасность. Рассмотрим их подробнее.

Пересылка SOAP-посланий Организация WS-1 выбрала для профиля WS-Basic следующие версии про токолов:

• SOAP 1.1;

• XML 1.0 (Second Edition);

• HTTP/1.1.

Большинство рекомендаций по использованию протокола SOAP 1.1 отно сится к сообщениям об ошибках . Профиль рекомендует не исполь зовать в элементе других вложенных элементов кроме , , и . Имена этих элементов рекомен дуется записывать без префиксов. В элементе следует исполь зовать только коды ошибок, определенные SOAP 1.1.

Профиль не рекомендует употреблять атрибут encodingstyle в элементах те ла SOAP-послания и вообще во всех элементах, определенных в про странстве имен с идентификатором http://schemas.xmlsoap.org/soap/envelope/.

378 Разработка Web-служб средствами Java Само SOAP-послание не должно содержать описаний DTD, инструкций по обработке и никаких элементов после элемента .

Все элементы, вложенные в элемент , должны быть записаны расши ренными именами с префиксами. Это облегчает синтаксический разбор по слания.

Профиль рекомендует использовать для пересылки SOAP-посланий только протокол HTTP версии 1.1, причем только метод POST. Если применен другой HTTP-метод, то сервер должен вернуть код ответа "405 Method not Allowed". Послание с сообщением об ошибке должно иметь код ответа "500 Server Error", а послание без элемента — код ответа " ОК" или "202 Accepted".

Сервер должен вернуть ответ с кодом "415 Unsupported Media Type", если в поле content-Type заголовка запроса не был указан MIME-тип text/xmi.

Сервер должен послать сообщение с кодом ответа "307 Temporary Redirect", если он направил сообщение другому серверу.

Не следует использовать расширения протокола HTTP, сделанные в реко мендации RFC 2774.

Как видите, большинство этих рекомендаций учтено в версии SOAP 1.2.

Описание WSDL Профиль WS-Basic содержит следующие версии спецификаций:

• WSDL 1.1;

• XML Schema 1.0.

Профиль дает множество рекомендаций по оформлению описания Web служб, сделанного на языке WSDL.

Большинство рекомендаций относится к элементу описания WSDL. Его бездумное применение приводит к большим трудностям при разборе описания Web-службы. Профиль рекомендует записывать элемент первым в элементе и использовать его только для включения других описаний или определений на языке XSD. В первом слу чае надо обращать особое внимание на значение атрибута targetNamespace включаемого описания. Оно должно соответствовать значению атрибута namespace элемента . В последнем случае элемент следует включать в элемент .

Элемент следует записывать первым в элементе или сразу после элемента . В элементе не следует применять имена элементов из пространств имен, на которые нет ссылок в элементе .

Глава 9. Развитие Web Services При описании посланий документного стиля в элементе следует записывать не более одного элемента , описывающего тело SOAP-послания. При этом надо обязательно использовать атрибут element, указывающий на XSD-определение типа элемента.

При описании посланий процедурного стиля можно записывать сколько угодно элементов , при этом следует использовать их атрибут type и строго соблюдать порядок следования элементов . Результат выпол нения процедуры должен содержать только один элемент , может быть, сложного типа.

В описании нельзя использовать операции типов soiicit-response и notification.

Профиль рекомендует применять для описания пересылки посланий (SOAP binding) только протокол SOAP 1.1. В элементе надо атри бутом transport указать значение "http://schemas.xmlsoap.org/soap/http". Так сделано в листинге 4.2. В атрибуте use следует указывать значение по умол чанию "literal".

В элементах и обязательно надо использовать атрибут part, а в элементе еще и атрибут name.

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

Большая часть этих рекомендаций уже учтена в версии WSDL 1.2.

Регистрация UDDI В профиль WS-Basic включены следующие версии спецификаций UDDI 2.0:

• UDDI Version 2.04 API Published Specification;

• UDDI Version 2.03 Data Structure Reference;

• Version 2.0 UDDI XML Schema 2001;

• UDDI Version 2.03 Replication Specification;

• Published Specification, Version 2.03 Replication XML Schema 2001;

• UDDI Version 2.03 XML Custody Schema;

• UDDI Version 2.01 Operator's Specification, Published Specification.

Основная рекомендация профиля WS-Basic — максимально согласовать описание Web-службы, сделанное на языке WSDL, с описанием UDDI.

Для этого профиль советует установить взаимно однозначное соответст вие между элементами описания и элементами описания UDDI. При этом значение атрибута 380 Разработка Web-служб средствами Java l o c a t i o n элемента должно совпадать со значением атрибута accessPoint элемента .

Если такое взаимно однозначное соответствие установлено, то следует по метить элемент как совместимый с профилем WS Basic. Для этого в элементе , вложенном в элемент , следует указать категорию ws-i-org:conformsTo И дать ей значение "http://wwww.ws-i.Org/profiles/base/l.0".

Описание технических деталей необходимо основывать на описа нии WSDL. Для этого в элементе , вложенном в элемент , следует указывать адрес описания WSDL, как это сделано в лис тинге 5.5. Кроме того, надо пометить элемент как совместимый с описанием WSDL. Для этого надо во вложенном элементе указать категорию uddi-org: types и дать ей значение "wsdlSpec".

Многие рекомендации профиля WS-Basic уже учтены в версии UDDI 3.0.

Безопасность Для обеспечения безопасности профиль WS-Basic рекомендует протокол HTTPS, то есть следующие протоколы:

Q HTTP Over TLS (рекомендация RFC 2818);

• TLS Protocol Version 1.0 (рекомендация RFC 2246);

• SSL Protocol Version 3.0;

• Internet X.509 Public Key Infrastructure Certificate and CRL Profile (реко мендация RFC 2459).

Это старые испытанные средства, их применение давно отработано на прак тике. Профиль дает лишь одну рекомендацию по использованию этих про токолов — оговаривать с Web-службой детали их применения.

Как видите, профиль WS-Basic дает ценные практические рекомендации по эффективной организации работы Web-службы. Эти рекомендации уже во площаются в следующих версиях спецификаций Web Services. Работа только началась. Организация WS-I готовит новые профили, образцы их примене ния и примеры приложений. Вы можете ознакомиться с ними на сайте ор ганизации http://www.ws-i.org/.

Что дальше?

Вот и последняя страница книги. Вы познакомились с новейшей Web технологией, широко распространяющейся по компьютерному миру и бур Глава 9. Развитие Web Services но развивающейся вширь и вглубь. Станет ли эта технология доминирую щей, затмит ли она другие Web-технологии — неизвестно. Полувековая ис тория развития вычислительной техники знает много шумных открытий, которым прочили роль панацеи от всех программистских бед. Большинство этих технологий благополучно забыто, другие заняли свое место и скромно работают на благо переработки информации. Скорее всего, то же самое произойдет и с Web Services. Но пока ниша Web-служб четко не определена.

От нас, от нашего труда и нашей активности зависит место и область при менения Web Services. Успехов вам в ваших проектах!

Список использованной литературы 1. Брогден Б., Минник К. Электронный магазин на Java и XML. — СПб.:

Питер, 2002. — 400 с, ил.

2. Валиков А. Н. Технология XSLT. — СПб.: БХВ-Петербург, 2002. — 544 с, ил.

3. Гэри Д. JavaServer Pages. — М.: "Вильяме", 2002. — 464 с, ил.

4. Даконта М., Саганич A. XML и Java 2. — СПб.: Питер, 2001. — 384 с, ил.

5. Кэй М. XSLT. Справочник программиста. — СПб.: Символ-Плюс, 2002. - 1016 с, ил.

6. Мак-Лахлин Б. Java и XML. — СПб.: Символ-Плюс, 2002. — 544 с, ил.

7. Монсон-Хейфел P. Enterprise JavaBeans. 3-е изд. — СПб.: Символ Плюс, 2002. — 672 с, ил.

8. Фридл Дж. Регулярные выражения. — СПб.: Питер, 2001. — 352 с, ил.

9. Хабибуллин И. Ш. Самоучитель Java. — СПб.: БХВ-Петербург, 2001. — 464 с, ил.

10. Хабибуллин И. Ш. Создание распределенных приложений на Java 2. — СПб.: БХВ-Петербург, 2002. - 704 с, ил.

11. Холл М. Сервлеты и JavaServer Pages.— СПб.: Питер, 2001.— 496 с, ил.

12. Шапошников И. В. Web-сервисы Microsoft.NET. — СПб.: БХВ Петербург, 2002. — 336 с, ил.

13. Яворский Дж., Перроун П. Дж. Система безопасности Java. Руководство разработчика. — М.: "Вильяме", 2001. — 528 с, ил.

14. Bequet H. et al. Beginning Java Web Services. — Wrox Press, 2002. — 411 p.

Список использованной литературы 15. Bequet H. Professional Java SOAP. — Wrox Press, 2002. — 400 p.

16. Cable S. et al. Professional Java Web Services. — Wrox Press, 2002. — 600 p.

17. Chappell D., Jewell T. Java Web Services. — O'Reilly & Ass., 2002. — 276 p.

18. Deitel H. M. et al. Java Web Services For Experiences Programmers. — Prentice Hall, 2002. — 500 p.

19. Developing Java Web Services with Java APIs for XML using WSDP. — Syngress Media, 2002. — 501 p.

20. Englander R. Java and SOAP. — O'Reilly & Ass., 2002. — 300 p.

21. Irani R., Basha S. J. AXIS: Next Generation Java SOAP.— Wrox Press, 2002. - 250 p.

22. Jasnowski M. Java XML and Web Services Bible. — John Wiley & Sons, 2002. - 1000 p.

23. Java Web Services Unleashed. — SAMS Publ., 2002. — 752 p.

24. Mogha R., Niit, Preetham V. V. Java Web Services Programming. — John Wiley & Sons, 2002. - 555 p.

25. Nagappan R. et al. Developing Java Web Services. — John Wiley & Sons, 2002 - 800 p.

26. Simeonov G. et al. Building Web Services with Java: Making Sense of XML, SOAP, USDL, and UDDI. - SAMS Publ., 2001. - 600 p.

27. Wesley A. A. Programming Web Services with Java. — Manning Publ., 2002. - 325 p.

Предметный указатель DD-файл з Default namespace Deployment DES 3DES Deserialization DH DIME Document type declaration AlGamal 340 DOM Apache SOAP 97, 135, 166, 206 DOM API Application server 86, 305 dom4j Axis 98, 101, H I, 135, 166, 167, 203, 353 DSA DSS В DTD 15, BES Binding language Blowfish EAServer 86, BPEL4WS EBXMIRR ebXML 113, 119, 183, Eclipse EIS EJВ-контейнер Castor EJB-слой Components Empty element Coordination protocols Entity-компонент CPA EXML CPP EXML+ CSS 14, Facets Data binding Frontier DCD Fundamental facets DDML Предметный указатель G MD5 MDB MDB-компонент Generated stubs Message GLUE 75, 99, 166, Messaging provider Grammar parsing Microsoft SOAP Toolkit и Model group 1I MSXML Home-интерфейс HTML N 1 Namespace IDEA 166, О Indri Inquiry API OC4J Interoperability profile Open Fusion Orbix E2A 86, J P J2EE-cepnep JAAS Java XML Pack 23 P2P 265, JAXB 63 Parser JAXM 98, 167, 247, 265, 269, 280 Port 283, JAXP 23, 53, 62, 65, 75, 247 Processing instructions JAXR 127, 128, 167, 234, 247 Publish API JAX-RPC 98, 167, 170, 247, JBoss 64, 86, 247, Q JBuilder 99, JCA 341 QName JCE 341 Qualified name JDeveloper 99 Qualified Name JDO 54, JDOM R JMS98, 265, JSSE 342 RC6 JWSDL 206 Relax RELAX NG К Remote-интерфейс Restriction Kodo JDO Root element RPC-стилъ • L RSA Lexical parsing s List SAAJ 98, 167, 247, 252, M SAX 53, SAX API MAC SAX2 Mapping file 386 Предметный указатель Schematron 51 WebSphere Studio 98, SEI-интерфейс 283, 323 Web-компонент Serialization 148 Web-контейнер 274, Servant 284 Web-слой Web-служба Servlet Web-услуга Session-компонент WS4EE 322, SGML WS-Basic SHA-1 WS-Coordination SMTP WSDL 176, SOAP 92, 97, WSDL4J 112, SOAP nodes WSDP 98, 234, 247, 252, SOAP.rLite WSEI-интерфейс SOAP4J WSFL SOAP-узлы WSIF 112, SOX WSIL SSI WSIL4J SSL WS-Inspection 113, Stub WS-Routing 136, Sun ONE Studio WSTK98, 111, 167,203, WS-Translation Target namespace Tie X.509 TLS Xalan Token XDR Tomcat 112, 206, 247, 294, Xerces 23, 24, 50, TREX XHTML Triple-DES Xindice 127, Twofish XML и XML declaration XML Schema 23, XML schema instance UDDI 113, 183, xml4j UDDI Business Registry 113, XMLP UDDI4J 116, XML-RPC 88, Union XML-стиль UUID XP XPath XSchema XSD21, Validating parser 23 XSL 75, VPN 343 XSL FO XSLT XSS4J w XSV Web Services WebLogic 64, 86, 247, WebSphere 23, 64, 86, 247, Предметный указатель О Адресат 283 Объединение Ассоциированное имя 48 Объект данных Атрибут 18 Объявление XML Объявление типа документа Открывающий тег п Базисные фасетки Базовый тип Блок заголовка 137 Парсер Порт 283, Порт-компонент Послание Поставщик сообщений Глобальное имя Проверяющий анализатор Грамматический анализ Простой тип Простой элемент д Пространство имен Пространство имен по умолчанию Профиль взаимодействия Десериализация Процедурный стиль Документный стиль Пустой элемент Заглушка Расширенное имя Закрывающий тег Реестр UDDI И З, И Имя XML Связка Инструкция по обработке Связывание данных Интерфейс адресата Web-службы Сервер приложений 86, Информационная система предприятия Сервлет Сериализация К Сложный тип Сложный элемент Служитель Компоненты Согласующий протокол Корневой элемент Список Сужение Л Сущность Схема Лексический анализ 52 Схема XML 23, м Модель группы 35 Тело элемента 388 Предметный указатель ц Установка 276 Целевое пространство имен 1еле Уточненное имя э ф Экземпляр схемы Фасетки 29 Элемент XML ВЕСЬ МИР компьютерных книг Более 1600 наименований книг в ИНТЕРНЕТ-МАГАЗИНЕ www.computerbook.ru *Э UompulerBQOK-iu - Microsoft Internet Explore!

"-!« " -' - * P •>•)№*•* 4!

Г найти I расширенный поиск—>> (S • Как купить книгу Глинах cipaa • Прайс-лист Microsoft Office XP хакный иктерш-т-магазин юомпьютеркой V Новинки в цвлом пктерпуры Computetbook.iu предлагает большой • Готовятся к печати 1ы6ор книг кокгаютеркоп тематики.

• Расширенный поиск Нал • ТОР • Электронные книги иолнчестю книг: ИОЛИЧЙСТЮ эпектрокнмх пега: • Обзоры мопичестю ноиснок: • Главная страница гастю "БХВ-Саютг Петербург" Нашим тгшеот*»* покупателем стал Е»гений Справочник Web-настера. XML :i "БХВ-Санкт Петербург" Copyright ©tompviieAook.iu. ВЕСЬ*МИР книг КОМПЬЮТЕРНЫХ КНИГ ПО КОМПЬЮТЕРНОЙ ТЕХНИКЕ, ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ И ЭЛЕКТРОНИКЕ ВСЕХ РУССКОЯЗЫЧНЫХ ИЗДАТЕЛЬСТВ УВАЖАЕМЫЕ ЧИТА ТЕЛИ!

ДЛЯ ВАС ОТКРЫЛСЯ ОТДЕЛ "КНИГА - ПОЧТОЙ" Заказы принимаются:

=> По телефону: (812) 541-85-51 (отдел "Книга — почтой") => По факсу: (812) 541-84-61 (отдел "Книга — почтой") => По почте: 199397, Санкт-Петербург, а/я => По E-mail: trade@bhv.spb.su Если у Вас отсутствует Internet — по почте, БЕСПЛАТНО, высылается дискета с прайс-листом (цены указаны с учетом доставки), аннотациями и оглавлениями к книгам и, конечно, условиями заказа.

МЫ ЖДЕМ ВАШИХ ЗАЯВОК С уважением, издательство "БХВ-Петербург" ВЕСЬМИР '.bhv.ru компьютерныхкниг Адрес: Россия, 199397, Санкт-Петербург, а/я 194;

Web-сайт: www.bhv.ru Уважаемые господа!

Издательство "БХВ-Петербург" приглашает специалистов в области компьютерных систем и информационных технологий для сотруд ничества в качестве авторов книг по компьютерной тематике.

Если Вы знаете и умеете то, что не знают и не умеют другие, Если Вам не нравится то, что уже написано, Если у Вас много идей и творческих планов, напишите книгу вместе с "БХВ-Петербург" Ждем в нашем издательстве как опытных, так и начинающих авторов, и надеемся на плодотворную совместную работу.

С предложениями обращайтесь к главному редактору Екатерине Кондуковой тел.: (812) 251 4244, 251 e-mail: kat@bhv.ru факс: (812) Гарантия эффективной работь M r s f* = — coot i *= Access БХВ-Петербург: www.bhv.ru (812) 251-42- Интернет-магазин: www.computerbook.ru Оптовые поставки: trade@bhv.spb.su Первые мирЕ ШАГИ В ИНФОРМАТИКИ Курс «Первые шаги в мире информатики» апробировался в течение 5 лет в шко лах Ленинградской области. В 2000 г. курс получил гриф: «Рекомендовано эксперт ным советом Комитета общего и профессионального образования Ленинградской области», имеет статус авторской программы.

Авторская программа «Первые шаги в мире информатики» с 1 по 9 годы обуче ния рассчитана для общеобразовательных и специализированных школ и является основным звеном в цепи непрерывного курса обучения информатике и информаци онным технологиям с 1 по 11 классы.

Курс может изучаться учащимися любого начального уровня развития и имеет полное программно-методическое обеспечение.

Рабочие тетради для учеников 1—4 класса I l l (11 к начальной школы предназначены для ИНФОРЧЛШЬИ проведения уроков по курсу «Первые шаги к в мире информатики» с использованием 0 ({V X * педагогических программных средств Г|Л \** * • !Г}.: " «Страна „Фантазия"» (авторы Тур С. Н., * 'lit inii*81 i 3W"' Бокучава Т. П) и содержат теоретический материал и задачи для самостоятельного решения.

^ • Наличие в каждом уроке дополни тельного задания позволяет проводить занятия в безмашинном варианте. Тетради содержат уроки, позволяющие проводить диагностическое тестирование на развитие памяти, внимания, саморегуляции.

Уроки спланированы так, чтобы строго соблюдались возрастные санитарно гигиенические нормы работы на компью тере.

Рабочая тетрадь для учеников 4 класса укомплектована тетрадью-вкладышем с са мостоятельными и контрольными работа ми для двух вариантов.

мирЕ ПЕРВЫЕ ШАГИ В ИНФОРМАТИКИ Курс «Первые шаги в мире информатики» апробировался в течение 5 лет в шко лах Ленинградской области. В 2000 г. курс получил гриф: «Рекомендовано эксперт ным советом Комитета общего и профессионального образования Ленинградской области», имеет статус авторской программы.

Авторская программа «Первые шаги в мире информатики» с 1 по 9 годы обуче ния рассчитана для общеобразовательных и специализированных школ и является основным звеном в цепи непрерывного курса обучения информатике и информаци онным технологиям с 1 по 11 классы.

S". Рабочие тетради для учеников 5—6 клас f!<{ f -ti\1i* ( » *,* сов и опорные конспекты для ученика 7— 1Я(Ф()1"НА1ИКИ 8 классов общеобразовательной школы предназначены для проведения уроков по курсу «Первые шаги в мире информатики» V • -<^ • и содержат теоретический материал и задачи для самостоятельного решения.

Приводятся общие сведения о вычис лительной технике, кодировании инфор мации и программировании на языке QBasic. Описываются системы счисления, создание алгоритмов, работа с текстовым и графическим редакторами. Рассматриваются операционные системы, файлы, каталоги, команды MS-DOS, основные понятия Windows, файловые оболочки, архивирова ние файлов, вирусы и антивирусная защи та, электронные таблицы.

В прилагаемых вкладышах представле ны самостоятельные, контрольные и тесто вые работы для двух вариантов.

Уроки спланированы так, чтобы строго соблюдались возрастные санитарно-гигие нические нормы работы на компьютере.

Книги издательства "БХВ-Петербург" в продаже:

Серия "В подлиннике" Андреев А. и др. MS Windows XP: Home Edition и Professional 848 с.

Андреев А. и др. Windows 2000 Professional. Русская версия 700 с.

Андреев А. и др. Microsoft Windows 2000 Server. Русская версия 960 с.

Андреев А. и др. Новые технологии Windows 2000 576 с.

Андреев А. и др. Microsoft Windows 2000 Server и Professional. 1056 с.

Русские версии Ахаян P. Macromedia ColdFusion 672 с.

Браун М. HTML 3.2 (с компакт-диском) 1040 с.

Вебер Дж. Технология Java (с компакт-диском) 1104 с.

Власенко С. Компакт-диск с примерами к книгам серии 32 с.

"В подлиннике": "MS Office XP в целом", "MS Access 2002", "MS Word 2002", "MS Excel 2002" Власенко С. Microsoft Word 2002 992 с Гофман В., Хомоненко A. Delphi 6 1152 с.

Долженков В. MS Excel 2002 1072 с Закер К. Компьютерные сети. Модернизация и поиск неисправностей 1008 с.

Колесниченко О., Шишигин И. Аппаратные средства PC, 1024 с.

4-е издание Мамаев Е. MS SQL Server 2000 1280 с.

Матросов А. и др. HTML 4.0 672 с.

Михеева В., Харитонова И. Microsoft Access 2000 1088 с.

Михеева В., Харитонова И. Microsoft Access 2002 1040 с.

Новиков Ф., Яценко A. Microsoft Office 2000 в целом 728 с.

Новиков Ф., Яценко A. Microsoft Office XP в целом 928 с.

Ноутон П., Шилдт Г. Java 2 1072 с.

Пауэлл Т. Web-дизайн 1024 с.

Персон P. Word 97 1120 с.

ПитцМ., КиркЧ. XML 736 с.

Пономаренко С. Adobe Illustrator 9.0 608 с.

Пономаренко С. Adobe Photoshop 6.0 832 с.

Пономаренко С. CorelDRAW 9 576 с.

Пономаренко С. Macromedia FreeHand 9 432 с.

Русеев С. WAP: технология и приложения 432 с.

Секунов Н. Обработка звука на PC (с дискетой) 1248 с.

Сузи P. Python (с компакт-диском) 768 с.

Тайц А. М., Тайц A. A. Adobe PageMaker 7.0 784 с.

Тайц А. М., Тайц A. A. Adobe InDesign 704 с.

Тайц А. М., Тайц A. A. CorelDRAW 9: все программы пакета 1136 с.

Тайц А. М., Тайц A. A. CorelDRAW 10: все программы пакета 1136 с.

Тихомиров Ю. Microsoft SQL Server 7.0 720 с.

Уильяме Э. и др. Active Server Pages (с компакт-диском) 672 с.

Усаров Г. Microsoft Outlook 2002 656 с.

Ханкт Ш. Эффекты CorelDRAW (с компакт-диском) 704 с.

Серия "Мастер" CD-ROM с примерами к книгам "Ресурсы MS Windows NT Server 4.0" и "Сетевые средства Windows NT Server 4" Microsoft Press. Электронная коммерция. 368 с.

В2В-программирование (с компакт-диском) Microsoft Press. Visual Basic 6.0 992 с.

Microsoft Press. Ресурсы MS Windows NT Server 4.0 752 с Айзеке С. Dynamic HTML (с компакт-диском) 496 с.

Анин Б. Защита компьютерной информации 384 с.

Асбари С. Корпоративные решения на базе Linux 496 с.

Березин С. Факс-модемы: выбор, подключение, 256 с.

выход в Интернет Березин С. Факсимильная связь в Windows 250 с.

Борн Г. Реестр Windows 98 (с дискетой) 496 с.

Бухвалов А. и др. Финансовые вычисления для профессионалов 320 с.

Валиков А. Технология XSLT 432 с.

Габбасов Ю. Internet 2000 448 с.

Гарбар П. Novell GroupWise 5.5: система электронной почты 480 с.

и коллективной работы Гарнаев A. Microsoft Excel 2000: разработка приложений 576 с.

Гарнаев A. Excel, VBA, Internet в экономике и финансах 816 с.

Гарнаев А., Гарнаев С. Web-программирование на Java и JavaScript 1040 с.

Гордеев О. Программирование звука в Windows (с дискетой) 384 с.

Гофман В., Хомоненко А. Работа с базами данных в Delphi 656 с.

Дарахвелидзе П. и др. Программирование в Delphi 5 (с дискетой) 784 с.

Дронов В. JavaScript в Web-дизайне 880 с.

Дубина А. и др. MS Excel в электронике и электротехнике 304 с.

Дубина А. Машиностроительные расчеты в среде 416 с.

Excel 97/2000 (с дискетой) Дунаев С. Технологии Интернет-программирования 480 с.

Жарков С. Shareware: профессиональная разработка 320 с.

и продвижение программ Зима В. и др. Безопасность глобальных сетевых технологий 320 с.

Киммел П. Borland C++ 5 976 с.

Костарев А. РНР в Web-дизайне 592 с.

Краснов М. DirectX. Графика в проектах Delphi (с компакт-диском) 416 с.

Краснов М. Open GL в проектах Delphi (с дискетой) 352 с.

Кубенский А. Создание и обработка структур данных в примерах 336 с.

на Java Кулагин Б. 3ds max 4: от объекта до анимации 448 с.

Купенштейн В. MS Office и Project в управлении и делопроизводстве 400 с.

Куприянов М. и др. Коммуникационные контроллеры фирмы Motorola 560 с.

Лавров С. Программирование. Математические основы, средства, теория 304 с.

Лукацкий А. Обнаружение атак 624 с.

Матросов A. Maple 6. Решение задач высшей математики 528 с.

и механики Медведев Е., Трусова В. "Живая" музыка на PC (с дискетой) 720 с.

Мешков А., Тихомиров Ю. Visual C++ и MFC, 1040 с.

2-е издание (с дискетой) Миронов Д. Создание Web-страниц в MS Office 2000 320 с.

Мещеряков Е., Хомоненко А. Публикация баз данных 560 с.

в Интернете Михеева В., Харитонова И. Microsoft Access 2000: разработка приложений 832 с.

Новиков Ф. и др. Microsoft Office 2000: разработка приложений 680 с.

Нортон П. Разработка приложений в Access 97 (с компакт-диском) 656 с.

Одинцов И. Профессиональное программирование. 512 с.

Системный подход Олифер В., Олифер Н. Новые технологии и оборудование IP-сетей 512 с.

Подольский С. и др. Разработка интернет-приложений 432 с.

в Delphi (с дискетой) Полещук Н. Visual LISP и секреты адаптации AutoCAD 576 с.

Понамарев В. СОМ и ActiveX в Delphi 320 с.

Пономаренко С. Adobe InDesign: дизайн и верстка 544 с.

Попов А. Командные файлы и сценарии Windows Scripting Host 320 с.

Приписное Д. Моделирование в 3D Studio MAX 3.0 352 с.

(с компакт-диском) Роббинс Дж. Отладка приложений 512 с.

Рудометов В., Рудометов Е. PC: настройка, оптимизация и разгон, 336 с.

2-е издание Русеев Д. Технологии беспроводного доступа. Справочник 352 с.

Соколенко П. Программирование SVGA-графики для IBM 432 с.

Тайц А. Каталог Photoshop Plug-Ins 464 с.

Тихомиров Ю. MS SQL Server 2000: разработка приложений 368 с.

Тихомиров Ю. SQL Server 7.0: разработка приложений 370 с.

Тихомиров Ю. Программирование трехмерной графики 256 с.

в Visual C++ (с дискетой) Трельсен Э. Модель СОМ и библиотека ATL 3.0 (с дискетой) 928 с.

Федоров А., Елманова Н. ADO в Delphi (с компакт-диском) 816 с.

Федорчук А. Офис, графика, Web в Linux 416 с.

Чекмарев A. Windows 2000 Active Directory 400 с.

Чекмарев А. Средства проектирования на Java (с компакт-диском) 400 с.

Шапошников И. Web-сайт своими руками 224 с.

Шапошников И. Интернет-программирование 224 с.

Шапошников И. Справочник Web-мастера. XML 304 с.

Шилдт Г. Теория и практика C++ 416 с.

Яцюк О., Романычева Э. Компьютерные технологии 464 с.

в дизайне. Логотипы, упаковка, буклеты (с компакт-диском) Серия "Изучаем вместе с BHV" Березин С. Internet у вас дома, 2-е издание 752 с.

Тайц A. Adobe Photoshop 5.0 (с дискетой) 448 с.

Серия "Самоучитель" Ананьев А., Федоров А. Самоучитель Visual Basic 6.0 624 с.

Васильев В. Основы работы на ПК 448 с.

Гарнаев А. Самоучитель VBA 512 с.

Герасевич В. Самоучитель. Компьютер для врача 640 с.

Дмитриева М. Самоучитель JavaScript 512 с.

Долженков В. Самоучитель Excel 2000 (с дискетой) 368 с.

Исагулиев К. Macromedia Dreamweaver 4 560 с.

Исагулиев К. Macromedia Flash 5 368 с.

Кетков Ю., Кетков А. Практика программирования: Бейсик, Си, Паскаль 480 с.

(с дискетой) Кирьянов Д. Самоучитель Adobe Premiere 6.0 432 с.

Кирьянов Д. Самоучитель MathCAD 2001 544 с.

Коркин И. Самоучитель Microsoft Internet Explorer 6.0 288 с.

Котеров Д. Самоучитель РНР 4 576 с.

Культин Н. Программирование на Object Pascal 528 с.

в Delphi 6 (с дискетой) Культин Н. Самоучитель. Программирование 416 с.

в Turbo Pascal 7.0 и Delphi, 2-е издание (с дискетой) Леоненков А. Самоучитель UML 304 с.

Матросов А., Чаунин М. Самоучитель Perl 432 с.

Омельченко Л., Федоров А. Самоучитель Microsoft FrontPage 2002 576 с.

Омельченко Л., Федоров А. Самоучитель Windows 2000 Professional 528 с.

Омельченко Л., Федоров А. Самоучитель Windows Millennium 464 с.

Пекарев Л. Самоучитель 3D Studio MAX 4.0 370 с.

Полещук Н. Самоучитель AutoCad 2000 и Visual LISP, 672 с.

2-е издание Полещук Н. Самоучитель AutoCAD 2002 608 с.

Понамарев В. Самоучитель Kylix 416 с.

Секунов Н. Самоучитель Visual C++ 6 (с дискетой) 960 с.

Секунов Н. Самоучитель С# 576 с.

Сироткин С. Самоучитель WML и WMLScript 240 с.

Тайц А. М., Тайц А. А. Самоучитель Adobe Photoshop 6 608 с.

(с дискетой) Тайц А. М., Тайц А. А. Самоучитель CorelDRAW 10 640 с.

Тихомиров Ю. Самоучитель MFC (с дискетой) 640 с.

Хабибуллин И. Самоучитель Java 464 с.

Хомоненко А. Самоучитель Microsoft Word 2002 624 с.

Шапошников И. Интернет. Быстрый старт 272 с.

Шапошников И. Самоучитель HTML 4 288 с.

Шилдт Г. Самоучитель C++, 3-е издание (с дискетой) 512 с.

Серия "Компьютер и творчество" Деревских В. Музыка на PC своими руками 352 с.

Дунаев В. Сам себе Web-дизайнер 512 с.

Дунаев В. Сам себе Web-мастер 288 с.

Людиновсков С. Музыкальный видеоклип своими руками 320 с.

Петелин Р., Петелин Ю. Аранжировка музыки на PC 272 с.

Петелин Р., Петелин Ю. Звуковая студия в PC 256 с.

Петелин Р., Петелин Ю. Музыка на PC. Cakewalk Pro Audio 9. Секреты 420 с.

мастерства Петелин Р., Петелин Ю. Музыка на PC. Cakewalk. 272 с.

"Примочки" и плагины Петелин Р., Петелин Ю. Музыкальный компьютер. 608 с.

Секреты мастерства Петелин Р., Петелин Ю. Персональный оркестр в PC 240 с.

Серия "Учебное пособие" Бенькович Е. Практическое моделирование динамических систем 464 с.

(с компакт-диском) Гомоюнов К. Транзисторные цепи 240 с.

Дорот В. Толковый словарь современной компьютерной лексики, 512 с.

2-е издание Культин Н. C/C++ в задачах и примерах 288 с.

Культин Н. Turbo Pascal в задачах и примерах 256 с.

Порев В. Компьютерная графика 432 с.

Робачевский Г. Операционная система Unix 528 с.

Сафронов И. Бейсик в задачах и примерах 224 с.

Солонина А. и др. Алгоритмы и процессоры цифровой обработки сигналов 464 с.

Солонина А. и др. Цифровые процессоры обработки сигналов фирмы 512 с.

MOTOROLA Угрюмов Е. Цифровая схемотехника 528 с.

Шелест В. Программирование 592 с.

Серия "Знакомьтесь" Надеждин Н. Карманные компьютеры 304 с.

Надеждин Н. Портативные компьютеры 288 с.

Надеждин Н. Знакомьтесь, цифровые фотоаппараты 304 с.

Серия "Быстрый старт" Васильева В. Персональный компьютер. Быстрый старт 480 с.

Гофман В., Хомоненко A. Delphi. Быстрый старт 288 с.

Дмитриева М. JavaScript. Быстрый старт 336 с.

Культин Н. Microsoft Excel. Быстрый старт 208 с.

Хомоненко А., Гридин. В. Microsoft Access. Быстрый старт 304 с.

мире ПЕРВЫЕ ШАГИ В ИНФОРМАТИКИ Программирование в среде Факультативный курс Курс «Первые шаги в мире информатики» апробировался в течение 5 лет в шко лах Ленинградской области. В 2000 г. курс получил гриф: «Рекомендовано эксперт ным советом Комитета общего и профессионального образования Ленинградской области», имеет статус авторской программы.

Факультативный курс «Программирова ние в среде Logo» предназначен для прове Н Ь р П М ! t i ' M f i It ЧИ|Ч' «л ;

и1мк>гчлтмкич. дения компьютерных уроков с использова нием интегрированной среды языка Logo, содержит теоретический материал и задания для закрепления изученного материала.

Наличие в каждом уроке дополнительного задания позволяет осуществить индивиду альный и дифференцированный подход к обучению. Рабочая тетрадь ученика содер жит вкладыш с самостоятельными и кон трольными работами для двух вариантов.

«Программирование в среде Logo» явля ется отдельным модулем курса Тур С. Н., Бокучава Т. П. «Первые шаги в мире ин форматики» и предназначен для обучения информатике в 5—6 классах.

Pages:     | 1 |   ...   | 3 | 4 ||



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.