Как получить кредитные сертификаты на вход в систему клиенту службы JAX-WS со связанными наборами политик и привязками в инструментах Rational / WebSphere - PullRequest
2 голосов
/ 23 сентября 2010

Я специально использую WebSphere Integration Developer V7, но я также мог бы использовать Rational Software Architect V 7.5.1 (как у меня обоих).

Контекст: Я пытаюсьсоздайте клиент JAX-WS для вызова служб Human Task Manager и Business Flow Manager в WebSphere Process Server V7, которые доступны через JAX-WS.По умолчанию они прикрепили наборы политик и привязки провайдера, которые задают некоторые параметры WS-Security (так как они не определены в WSDL).

Я выяснил, как заставить его работать с использованием динамического веб-проекта.Я смог сгенерировать код клиента JAX-WS из WSDL.Мне удалось экспортировать наборы политик и привязки провайдера и клиента из Process Server и импортировать их в мое рабочее пространство.Мне удалось прикрепить набор политик и привязки клиента к клиентскому сервису.Мне удалось настроить страницу и сервлет для вызова моего веб-сервиса (для проверки клиента).И я смог настроить параметры безопасности в дескрипторах развертывания и в файлах привязки / расширения websphere, чтобы заставить его работать.

Это все замечательно, но на самом деле мы не хотим военного ухапросто чтобы показать клиенту веб-сервиса другие наши приложения, которые мы пишем.Мы хотим сгенерировать jar клиента веб-службы и упаковать его в другие приложения.

Учитывая эту мысль, я смог выяснить, как использовать обычный проект Java в моей среде IDE, и сгенерировать клиент веб-службы.внутрь.Я также смог прикрепить набор политик и привязки клиента к клиенту.

Моя проблема в настоящее время, как я могу вызвать это?Я создал динамический веб-проект с моей страницей и сервлетом, как и прежде, для тестирования моего клиента.Я настроил свой клиентский проект как зависимость от веб-библиотеки, чтобы он имел доступ к клиентскому коду.Я даже могу настроить дескрипторы развертывания, как и раньше, для принудительного входа в систему и аутентификации.Единственная проблема сейчас заключается в том, что я не могу понять, как передать учетные данные моему веб-сервису теперь, когда он находится в собственном «фляге».Раньше у меня был доступ к меню для настройки TokenGenerator и CallbackHandler.Теперь у меня нет доступа к этим меню, так как клиент не находится в динамическом веб-проекте.Так что теперь у меня есть «отключение», и оно, конечно, не удается при попытке запустить его на сервере.

Должен быть способ сделать это.Я должен быть в состоянии сгенерировать клиентскую флягу и передать это, в чем это нуждается.Кто-нибудь сталкивался с этим раньше?

1 Ответ

4 голосов
/ 07 декабря 2010

Хорошо.Я потратил много времени на изучение этого, читая справочники и статьи разработчиков, стуча головой по клавиатуре, и я наконец-то кое-что нашел.Не совсем так, но почти.(Хотелось бы, чтобы кое-что из IBM было легче найти ... но вы работаете с тем, что вам дают. И, честно говоря, с тем, что я прочитал, это имеет смысл и довольно мощно.)

В любом случае, здесьэто хитрость для инструментов Rational и WebSphere: Сначала нужно создать пустой Java-проект. Это один из ключей к созданию клиента портативного веб-сервиса.

Так что вот оноПока что:

  1. Создайте пустой проект Java в вашей IDE.Я предпочитаю использовать перспективу Java EE в Rational Application Developer / Software Architect или в WebSphere Integration Developer.
  2. Импортируйте WSDL и схемы в другой пустой общий проект в вашей IDE, а НЕ вНедавно созданный Java-проект.
  3. Щелкните правой кнопкой мыши основной WSDL и выберите создание клиента веб-службы.
  4. Еще один ключ здесь : убедитесь, что в мастереПохоже, что вы изменяете клиентский проект на Java-проект, созданный на первом этапе.По умолчанию мастер будет пытаться настроить таргетинг на новый или существующий динамический веб-проект, а это НЕ то, что вам нужно.
  5. Убедитесь, что вы выбрали JAX-WS в качестве своей реализации.Убедитесь, что вы хотите, чтобы клиент был «переносимым», и убедитесь, что вы указываете мастеру включить WSDL в клиент Java Project.
  6. В ожидании у вас все в порядке (и работает локальный сервер).), Инструмент Rational / WebSphere теперь должен сгенерировать клиент веб-службы JAX-WS в проекте Java.

Замечательно!Большой!Теперь у вас есть Java-проект (он же jar), который вы можете использовать, чтобы сделать его переносимым.Но как сделать инструмент IBM счастливым и присоединить политики безопасности к клиенту?

Во-первых, я узнал, что действительно лучше всего подключать политики безопасности в административной консоли WebSphere Application Server / Enterprise.Сервисная шина / Сервер процессов.Слишком много вещей, чтобы попытаться объяснить их безопасностью, пытаться вручную все это кодировать, хотя IBM предоставляет вам API для этого.Доверьтесь мне.Проще определить безопасность на сервере, а затем просто назначить ее клиенту.

В любом случае .... чтобы клиент был виден на консоли администратора для присоединения наборов политик и привязок клиентадля безопасности JAX-WS он должен быть на «веб-уровне» (из-за отсутствия лучшего термина), чтобы он мог видеть флягу как веб-клиента.Это означает, что присоединение jar-файла как J2EE Utility Jar к проекту EAR не будет работать.EAR - это не «веб-уровень», а «уровень приложения».Таким образом, чтобы сделать это, вам нужно связать Java-проект с EAR на экране Зависимости модуля J2EE, но НЕ как Utility Jar.Вместо этого установите флажок «lib».Это означает, что он может быть виден / смонтирован в каталоге lib динамического веб-проекта / войны (что вы также должны сделать).Удивительно, но консоль администратора теперь увидит ваш клиентский jar как настоящий клиент веб-службы JAX-WS!И теперь вы можете связать с ним наборы политик и привязки клиентов, чтобы удовлетворить ваши потребности в безопасности!

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

РЕДАКТИРОВАТЬ: Я перепутал с политиками безопасности и обнаружил, что статья этого разработчика разработчик помог мне больше всего,Обратите особое внимание на Листинг 2 ClientTest.java .К сожалению, вы должны закодировать всю безопасность в вашем клиенте, чтобы заставить его работать максимально чисто.А потом вот еще одна ошибка.IBM позволит вам создавать токены имени пользователя на клиенте, который работает за пределами WebSphere, но они НЕ будутпозволяют создавать токены LTPA вне WebSphere.Таким образом, чтобы протестировать токены такого типа, вам нужно упаковать и развернуть клиент локально, чтобы протестировать его все.

...