Использование WS-Security с приложением Crystal Reports 2008В данном документе демонстрируется, как приложение Crystal Reports 2008 и его возможности по управлению доступом к данным XML и веб-служб позволяют применять веб-службу, использующую WS-Security. Также здесь описывается, как создать образец веб-службы, использующей WS-Security. А затем показываются шаги, необходимые для подключения к ней приложения Crystal Reports 2008 с помощью имеющихся в нем возможностей управления доступом к данным XML и веб-служб. Введение В приложении Crystal Reports 2008 появилось много новых функций, в том числе значительно улучшенные возможности по управлению XML и веб-службами. В их число входит поддержка большего числа типов параметров. Благодаря обновленному набору веб-служб Apache Axis 2 улучшена совместимость с веб-службами. В данном документе показывается возможность подключения к веб-службам, использующим WS-Security. Следует учитывать, что приложение Crystal Reports - это не один только конструктор отчетов Crystal Reports. Отчеты часто размещаются на серверах, чтобы упростить пользователям доступ к ним. Отчет, отображаемый с помощью веб-службы, использующей WS-Security, требует предоставления для своего просмотра учетных данных для аутентификации. В конструкторе отчетов Crystal Reports такие данные можно ввести непосредственно. Однако в среде сервера пользователь не всегда в состоянии предоставить учетные данные для сервера. Разработчики отчетов могут избавить пользователей от необходимости ввода учетных данных. Что более важно, тип аутентификации, используемый веб-службой, может не соответствовать используемой системе безопасности Business Objects Enterprise или корпоративной политике безопасности. В результате может потребоваться предоставление отдельных учетных данных для этой веб-службы, и при этом - беспрепятственным образом. Это выполняется с помощью обработчика обратных вызовов учетных данных. Для управления XML и веб-службами в приложении Crystal Reports 2008 используется модуль Apache Rampart WS-Security, который обеспечивает поддержку WS-Security с помощью протокола Apache Axis 2. Модуль Apache Rampart использует обработчик обратных вызовов учетных данных таким образом, что аутентификация может управляться разработчиком. Единственное требование при создании обработчика - соответствие стандартному интерфейсу. Детали реализации зависят только от разработчика. В Crystal Reports 2008 драйвер соединения для подключения с XML и веб-службами использует файл конфигурации, в который можно внести необходимые данные для нахождения и связывания обработчика с соответствующими вызовами службы. Примечание. У поставщиков веб-служб, использующих WS-Security для защиты своей ценной информации, появляется возможность использовать обработчик учетных данных и соответствующий файл конфигурации WS-Security для своих служб для упрощения их использования клиентами, создающими отчеты Crystal Reports. Этот обработчик обратных вызовов должен работать и для других клиентов, использующих модуль Rampart WS-Security. В данном документе объясняется, как создать веб-службу, использующую WS-Security, а затем - как настроить приложение Crystal Reports 2008 для извлечения данных из нее. В данном примере для доступа к веб-службе используется аутентификация по маркеру имени пользователя. Приведен образец обработчика обратных вызовов для аутентификации модуля Rampart. Документ содержит основную информацию о том, как позволить пользователям приложения Crystal Reports 2008 подключаться к веб-службам, использующим WS-Security, с помощью разных типов аутентификации. В качестве образца веб-службы используется веб-служба Microsoft IIS, разработанная с помощью платформы ASP.NET (ASMX) с надстройкой WSE 3.0. Это позволит продемонстрировать взаимодействие между отдельными технологиями: технологией Apache Axis на основе Java и технологией ASP.NET на основе платформы Microsoft .NET. Для выполнения примеров используется инструментарий разработки Visual Studio 2005. Создание веб-службы После установки WSE 3.0 с поддержкой Visual Studio 2005 создайте веб-службу (в примерах используется язык C#). Добавьте WS-Security согласно инструкциям и выберите аутентификацию по маркеру имени пользователя. Если значения по умолчанию не изменялись, будет создан файл Service1.asmx, а вместе с ним еще несколько файлов проекта. Результат должен включать программный код, аналогичный коду в созданном файле Service1.asmx.cs: ***Для первоначального тестирования следует закомментировать атрибут Policy, чтобы отключить WS-Security. Получение данных из веб-службы Необходимо получить некоторые данные из службы. Приложение Crystal Reports 2008 поддерживает получение массивов объектов из службы и обрабатывает их как наборы данных. Примечание. В момент создания данного документа приложением Crystal Reports 2008 не поддерживаются сериализованные объекты ADO . NET DataSet или DataTable . Это ограничение предполагается устранить в будущих пакетах обновления. Полнофункциональная служба должна возвратить некоторые значимые данные. Создайте простой массив объектов и передайте его методу службы: Таким образом, мы создали новый метод веб-службы GetProcesses. Этот метод возвращает список процессов, выполняющихся в системе, и некоторую информацию о них. Это достаточно простой набор данных, и для выполнения метода не требуется дополнительных настроек. Теперь следует запустить службу, указать URL-адрес WSDL и использовать этот адрес в отчетах Crystal Reports. URL-адрес будет подобен следующему: http://localhost:2937/WSEServiceSample/Service1.asmx?WSDL В зависимости от того, как приложением Visual Studio запускается обозреватель для отображения службы, может потребоваться щелкнуть мышью на файле Service1.asmx в обозревателе. В мастере источников данных XML and Web Services отчетов Crystal Reports выберите веб-службу, как показано ниже. Затем вставьте URL-адрес WSDL в поле HTTP WSDL, как показано ниже: Далее следует завершить выполнение мастера, добавить поля в отчет и просмотреть результаты, поскольку в веб-службе закомментирован атрибут Policy. Включение WS-Security в веб-службу Это первый шаг по включению WS-Security в веб-службу. Теперь необходимо восстановить атрибут Policy в начале кода реализации веб-службы, как показано ниже: Затем откройте файл wse3policyCache.config, который должен был быть создан для проекта. В этом файле может понадобиться изменить имя разрешенного пользователя, которое должно быть учетной записью пользователя на сервере или в домене сети Windows, к которому относится учетная запись пользователя. Необходимо также закомментировать элементы requiredActionHeader. Результат должен быть подобен следующему: Необходимо изменить элемент <allow user="YOUR-DOMAIN\Your-Account" />, чтобы включить домен и учетную запись. Специальное управление маркерами Для веб-службы необходим специальный диспетчер маркеров, чтобы проверять имена пользователей и пароли. Это позволяет переопределять аутентификацию по маркерам, как необходимо для службы. Щелкните правой кнопкой мыши узел App_Code в окне Visual Studio Solution Explorer, щелкните Add New Item… и выберите Class. Добавьте в реализацию класса следующий программный код: Используемый диспетчер маркеров указывается в файле Web.config веб-службы. Добавьте в конец файла Web.config для службы следующие элементы: Скомпилируйте проект, чтобы проверить, что он создан без ошибок. Дополнительные настройки в файле Web.config Чтобы максимально упростить понимание WSDL веб-службы, протокол SOAP ограничен версией SOAP 1.1. Необходимо также добавить другие расширения WSE 3.0. Начало файла Web.config должно содержать следующие строки XML: Теперь, если вы запустите проект на выполнение и посмотрите код WSDL, то сможете отметить, что пространство имен SOAP 1.2 объявлено в заголовке файла, но в теле файла оно не используется. Веб-служба создана. Можно не останавливать ее выполнение. Компоненты Axis 2 и Rampart WS-Security Управление данными в приложении Crystal Reports 2008 реализуется с помощью языка Java. Для поддержки WS-Security им используется набор веб-служб Apache Axis 2 и расширения Apache Rampart. Ключевое требование для доступа к данным Crystal Reports - он должен быть прозрачен для пользователя. Это необходимо для любого типа развертывания сервера в специальных веб-приложениях или для управления в приложении Business Objects Enterprise. Чтобы передать идентификатор пользователя и пароль, не запрашивая их у пользователя, необходимо создать небольшой класс, которым передавался бы идентификатор пользователя и пароль в компонент Rampart WS-Security для аутентификации между клиентом и сервером от имени пользователей. В приведенном здесь примере используется класс обработчика обратных вызовов пароля. Сохраните в файле с именем WSE_PWCBHandler.java следующий программный код: Необходимо заменить имя учетной записи и пароль, указанные в этом образце кода! Предполагается, что "реальное" внедрение имело бы более целесообразный механизм для управления именами пользователей и извлечения паролей. Для компиляции этого кода необходим комплект Java 1.5 SDK. Кроме того, в переменной окружения CLASSPATH должна быть указана библиотека Apache Web Service Security, wss4j-1.5.1.jar, чтобы компилятор Java мог ее использовать. Приложение Crystal Reports 2008 поставляется с этой библиотекой, а также с необходимым комплектом Java SDK. Комплект Java SDK по умолчанию устанавливается в каталог C:\Program Files\Business Objects\javasdk Местоположение файла wss4j-1.5.1.jar по умолчанию: C:\Program Files\BusinessObjects\Common\4.0\java\lib\external\wss4j-1.5.1.jar Добавьте этот путь в переменную окружения Windows CLASSPATH, а затем выполните следующую команду в командной строке: C:\Program Files\Business Objects\javasdk\bin\javac WSE_PWCBHandler.java При этом должен создаться файл с именем WSE_PWCBHandler.class. Отметьте местоположение этого файла. Он будет скопирован в новое местоположение в следующем разделе. Файл политики WS-Security Необходимо настроить компоненты Apache Rampart в соответствии с используемым типом обеспечения безопасности и местонахождением класса обработчика обратного вызова паролей, скомпилированным выше. Это настройка политики для веб-службы на стороне клиента. Для управления XML и веб-службами в отчетах Crystal Reports указывается путь к этому файлу политики. Ниже приводится содержимое файла политики, которое можно сохранить в файле с именем wse_policy.xml: Чтобы упростить отслеживание, сохраните файл политики на компьютере в папке C:\Users\Public или в какой-либо другой общедоступной папке. Необходимо изменить в файле запись <ramp:user>, чтобы включить домен и учетную запись пользователя. Обратите внимание на элемент <ramp:passwordCallbackClass>. Им указывается компонент обработчика паролей для Rampart, а также формируется системный путь в файловой системе, указываемый в разделе CLASSPATH для Crystal Reports для Java (расположенном в файле CRConfig.xml), по которому ищется обработчик паролей. При условии, что создан компонент обработчика паролей, как показано выше, и что требуется поместить его в папку C:\Users\Public на компьютере, необходимо выполнить следующие действия. Создайте такую структуру папок, чтобы создать обработчик паролей со следующим путем: C:\Users\Public\WSE_PWCBHandler\org\apache\rampart\samples\test\WSE_PWCBHandler.class Скопируйте в папку файл WSE_PWCBHandler.class. Путь к папке, C:\Users\Public\WSE_PWCBHandler\, необходимо указать в разделе CLASSPATH для Crystal Reports в файле конфигурации Java для Crystal Reports, который по умолчанию расположен здесь: C:\Program Files\Business Objects\Common\4.0\java\CRConfig.xml Элемент Classpath должен заканчиваться таким образом: ;C:\Users\Public\WSE_PWCBHandler\;${CLASSPATH}</Classpath> Примечание: Чтобы изменить файл CRConfig.xml в операционных системах Windows Vista или Windows Server 2008, необходимо запустить редактор с полномочиями Администратора. Щелкните правой кнопкой мыши ярлык редактора, например, Visual Studio 2005, и щелкните Run as Administrator. Дополнительно: Можно исключить необходимость создания глубокой структуры папок для обработчика обратного вызова пароля, удалив все соответствующее определение пространства имен или часть его в элементе <ramp:passwordCallbackClass>. Создание отчета Последний шаг - создание отчета Crystal Reports. В этом шаге файл политики передается управлению XML и веб-службами, чтобы он мог правильно вызывать компоненты Rampart. Выполните указанные выше шаги по созданию отчета с помощью возможностей управления данными XML и веб-служб, только на этот раз следует ввести путь к файлу конфигурации политики WS-Security, как показано здесь: Отчет должен обновиться и отобразить ожидаемые данные. Заключение В данном документе показано, как создать веб-службу с включением WS-Security, а затем создать отчет Crystal Reports, который может ее использовать. Различные способы, которыми можно развертывать отчеты Crystal Reports, и типы защиты, поддерживаемые в WS-Security, объединяясь вместе, резко повышают сложность проблемы с подключениями. Однако предлагаемая гибкость должна позволить подключаться к веб-службе с включением WS-Security, развернув практически любой тип аутентификации. Дополнительные примечания Во время выхода выпуска Crystal Reports 2008 Service Pack 0 протокол SOAP 1.2 не поддерживался. Это ограничивает платформой ASP.NET (ASMX с WSE 3.0) возможность подключения к наборам веб-служб Microsoft с включением WS-Security. Реализация Windows Communication Foundation (WCF) WS-Security компании Microsoft (WSHttpBinding) требует применения протокола SOAP 1.2. В следующие пакеты обновления Crystal Reports 2008, по-видимому, будет добавлена поддержка протокола SOAP 1.2. См. заметки о выпусках, которые будут включены в будущие пакеты обновления и продукты Crystal Reports. |