(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

IBM Rational Host On-Demand: единый вход (SSO) с использованием Web-сервисов

Источник: IBM

В этой статье описывается пошаговая процедура написания клиента Web-сервиса с последующим его конфигурированием (с использованием макроса IBM Rational Host On-Demand) для извлечения учетных данных из Web-сервиса и предоставления их в экранный сеанс. Эта же идея может быть применена для получения любых данных из Web-сервиса для автоматического заполнения экранов терминала.

Введение

IBM Rational Host On-Demand - это приложение эмулятора терминала, которое можно использовать для подключения к хост-приложениям, работающим на IBM i (5250), IBM System z (3270) и других UNIX терминалах. Оно обеспечивает экономически эффективный и безопасный браузерный и небраузерный доступ к хосту для пользователей в интра- и экстрасетях. Приложение может быть установлено на Web-сервере, что упрощает административное управление и развертывание. Кроме того, его апплет загружается в клиентский браузер или рабочую станцию, предоставляя пользователю подключение к критически важным приложениям и данным хоста. Это Web-to-host решение Rational для сетевого подключения обеспечивает без какого-либо программирования браузерный доступ с развитой защитой к приложениям хоста из Интернета.

Обзор

Существующая в Rational Host On-Demand поддержка единого входа (Single Sign-On - SSO) при помощи макросов ограничивается Portal Server и Credential Mapper Servlet. Несмотря на то, что в макросах есть много собственных возможностей, позволяющих непосредственно реализовать интеграционное решение для выполнения единого входа с помощью Web-сервисов, до сих пор макросы Rational Host On-Demand не исследовались в этом направлении. Данная статья направлена на то, чтобы помочь администраторам и пользователям Rational Host On-Demand понять гибкость макросов Rational Host On-Demand и научиться самостоятельно программировать макросы для выполнения единого входа при помощи Web-сервисов.

В этой статье рассматриваются следующие вопросы:

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

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

Архитектура развертывания

На рисунке 1 показана структура Rational Host On-Demand и Web-сервиса SSO.


Рисунок 1. Архитектурный поток
Рисунок 1. Архитектурный поток

Ниже приведены этапы процесса.

  1. Клиент (конечный пользователь) Rational Host On-Demand загружает HTML-файл, а также архивные файлы Java™ (JAR-файлы, в том числе дополнительные JAR-файлы, необходимые для выполнения кода клиента Web-сервиса).
  2. Двойным щелчком по пиктограмме сеанса открывается экранный сеанс, а затем запускается макрос (SSOwebService.mac).
  3. Макрос, как часть элемента actions вызывает метод объекта клиента Web-сервиса SSO, чтобы получить имя пользователя.
  4. Далее клиент Web-сервиса SSO подключается к Web-сервису SSO, развернутому на движке веб-сервисов (Apache Axis2), и получает имя пользователя.
  5. Макрос, как часть следующего элемента actions, вызывает второй метод объекта клиента Web-сервиса SSO и получает пароль.
  6. Клиент Web-сервиса SSO подключается к Web-сервису SSO, развернутому на механизме исполнения Web-сервисов, и получает пароль.
  7. Макрос завершает вызов методов Web-сервиса и переходит к выполнению дальнейших действий.
  8. На экране входа в систему макрос во время выполнения заполняет поля имени пользователя и пароля, а затем имитирует нажатие Enter.
  9. Данные отправляются на хост, и происходит автоматический вход в систему без ручного ввода учетных данных на экране.

Макрос ввода учетных данных

В приведенных ниже листингах показан пример макроса ввода учетных данных. В листинге 1 класс клиента Web-сервиса включен в макрос с помощью тега import, а WSClient - это имя, присвоенное ему.

Листинг 1. Импорт класса клиента (WSClient) Web-сервиса

<HAScript name="SSOwebService" description="Single Sign-On using web Service" 
timeout="60000" pausetime="300" promptall="true" blockinput="false" 
author="Suneel - Mahesh " creationdate="Aug 21, 2010 1:38:43 PM" 
supressclearevents="false" usevars="true" ignorepauseforenhancedtn="true" 
delayifnotenhancedtn="0" ignorepausetimeforenhancedtn="true">

    <import>
        <type class="com.ibm.developerWorks.HOD.HODCredentialServiceClient"
         name="WSClient"/>
    </import>
        

В листинге 2 переменная webService содержит URL Web-сервиса, а переменная SSO указывает на объект клиента Web-сервиса.

Листинг 2. Создание переменных и экземпляра класса

 
    <vars>
      <create name="$webService$" type="string" 
      value="'http://localhost:8080/axis2/services/HODCredentialGenerator'" />
      <create name="$SSO$" type="WSClient" value="$new WSClient($webService$)$" />
    </vars>
    

В листинге 3 SSO.getUserID() и SSO.getPassword() получают от Web-сервиса имя пользователя и пароль соответственно, а затем значения выводятся на экран.

Листинг 3. Определение действий action и получение учетных данных

 
    <screen name="Screen1" entryscreen="true" exitscreen="true" transient="false">
        <description >
            <oia status="NOTINHIBITED" optional="false" invertmatch="false" />
        </description>
        <actions>
            <input value="$SSO.getUserID()$" row="6" col="53" movecursor="true" 
            xlatehostkeys="true" encrypted="false" />
            <input value="'[tab]'" row="0" col="0" movecursor="true" 
            xlatehostkeys="true" encrypted="false" />
            <input value="$SSO.getPassword()$" row="7" col="53" movecursor="true" 
            xlatehostkeys="true" encrypted="false" />
            <input value="'[enter]'" row="0" col="0" movecursor="true" 
            xlatehostkeys="true" encrypted="false" />
        </actions>
        <nextscreens timeout="0" >
        </nextscreens>
    </screen>
    </HAScript>
        

Клиент Web-сервиса

HODCredentialServiceClient.java является клиентом Web-сервиса, который подключается к Web-сервису, развернутому (в данном случае) на механизме исполнения Web-сервисов Apache Axis2.

При этом используется клиентская заглушка (сгенерированная плагином Axis2 для Eclipse). Макрос Rational Host On-Demand создает экземпляр класса и вызывает методы для получения имени пользователя и пароля. После создания экземпляра класса клиент Web-сервиса получает имя текущего пользователя, как показано в листинге 4. Оно будет использоваться в качестве ключа для получения учетных данных из Web-сервиса.

Листинг 4. Код клиента Web-сервиса

 
/* Пример программы для IBM developerWorks
 * 
 * Автор(ы): Сунил, Махеш
 */

package com.ibm.developerWorks.HOD;
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;

public class HODCredentialServiceClient {	
	String key;
	//клиентская заглушка, сгенерированная плагином Axis2 для Eclipse
	HODCredentialGeneratorStub stub;  

	//принимает URL Web-сервиса из макроса
	public HODCredentialServiceClient(String webService){ 
 
		//получить текущего пользователя системы из java. 
		//Мы будем использовать это значение в качестве ключа для получения
		//учетных данных
		key = System.getProperty("user.name");		
		try {
			stub = new HODCredentialGeneratorStub(webService);
		} catch (AxisFault e) {
			e.printStackTrace();
		}
	}

	//метод для получения идентификатора пользователя из Web-сервиса
	public String getUserID(){  
		HODCredentialGeneratorStub.GetUserID userIDKey = 
			new HODCredentialGeneratorStub.GetUserID();
		HODCredentialGeneratorStub.GetUserIDResponse userIDResponse = null;
		//установить ключ для запроса идентификатора пользователя из Web-сервиса
		userIDKey.setKey(key); 
		try {
			userIDResponse = stub.getUserID(userIDKey);
		} catch (RemoteException e) {
			e.printStackTrace();
			}
		return userIDResponse.get_return();
	}

	//метод для получения пароля из Web-сервиса
	public String getPassword(){ 
		HODCredentialGeneratorStub.GetPassword passwordKey = 
			new HODCredentialGeneratorStub.GetPassword();
		HODCredentialGeneratorStub.GetPasswordResponse passwordResponse = null;
		//установить ключ для запроса пароля из Web-сервиса
		passwordKey.setKey(key); 
		try {
			passwordResponse = stub.getPassword(passwordKey);
		} catch (RemoteException e) {
			e.printStackTrace();
			}
		return passwordResponse.get_return();		
	}
}
                

Web-сервис учетных данных

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

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

Пример HODCredentialGenerator.java, приведенный в листинге 5, принимает в качестве входных данных ключ и предоставляет требуемое имя пользователя или пароль, основываясь на значении ключа. Его можно развернуть как Web-сервис при помощи плагина Axis2 для Eclipse.

Приведенный здесь пример максимально упрощен, чтобы проиллюстрировать возможности расширения макросов Rational Host On-Demand. При реализации SSO рекомендуется применять дополнительную защиту. Например, можно с помощью HTTPS создать защищенный канал между клиентом Web-сервиса и Web-сервисом или модифицировать Web-сервис для шифрования пароля с соответствующей логикой дешифрования в клиенте Web-сервиса.

Листинг 5. Код Web-сервиса

 
/* Пример программы для IBM developerWorks
 * 
 * Автор(ы): Сунил, Махеш
 */
 
package com.ibm.developerWorks.HOD;

public class HODCredentialGenerator {
	public String getUserID(String key){
        // логика для получения имени пользователя на основе вводимого здесь ключа
		return "uname";
			}
	public String getPassword(String key){
		//логика для получения пароля на основе вводимого здесь ключа
		return "password";
	}
}

                

Интеграция с клиентом Rational Host On-Demand

Создание JAR-файла

Создайте JAR-файл (hodwsclient.jar) с клиентом Web-сервиса и вспомогательными файлами класса-заглушки, подписав его действительным сертификатом.

Создание файла мастера развертывания с HTML-параметром

  1. Откройте мастер Rational Host On-Demand Deployment Wizard и создайте новую HTML-страницу с необходимым определением хоста.
  2. В Session Properties > Start Options настройте макрос входа в систему на автозапуск с сеансом. Предыдущий макрос записан для сеанса с первым экраном как экран входа в систему.
  3. В панели Additional Options выберите Advanced Options > HTML parameters и добавьте HTML-параметр следующим образом (см. рисунок 2):
    • Parameter Name: AdditionalArchives
    • Parameter Value: список JAR-файлов через запятую и без расширения .jar
  4. Список JAR-файлов должен включать JAR, который содержит класс клиента Web-сервиса и все необходимые вспомогательные JAR-файлы. Вспомогательные JAR-файлы могут включать JAR-файлы, необходимые для класса заглушки.
  5. В случае, если заглушка сгенерирована плагином axis2, список JAR-файлов включают в себя:
    • hodwsclient
    • axiom-api-1.2.7
    • axiom-impl-1.2.7
    • axis2-1.4.1
    • backport-util-concurrent-3.1
    • commons-codec-1.3
    • commons-httpclient-3.1
    • commons-logging-1.1.1
    • neethi-2.0.4
    • woden-api-1.0M8
    • wsdl4j-1.6.2
    • XmlSchema-1.4.2

    Рисунок 2. Панель Add HTML parameters в Rational Host On-Demand Deployment Wizard

    Рисунок 2. Панель Add HTML parameters в Rational Host On-Demand Deployment Wizard 

  6. Продолжайте создание HTML-страницы.

Доступ к странице

  1. В браузере с поддержкой Java откройте HTML-файл, созданный на предыдущих шагах, и войдите в сеанс Rational Host On-Demand, для которого настроен макрос ввода учетных данных.
  2. Экран входа в систему будет автоматически заполнен учетными данными, предоставляемыми Web-сервисом, как показано на рисунке 3.

    Рисунок 3. Экран единого входа (SSO) в систему
    Рисунок 3. Экран единого входа (SSO) в систему

Что вы узнали

Теперь вы знаете, как написать клиент Web-сервиса, а затем настроить его с помощью макроса Rational Host On-Demand для извлечения учетных данных из Web-сервиса и их последующего ввода в экранный сеанс на вашем терминале.

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

Загрузка

Описание

Имя

Размер

Метод загрузки

Файлы классов и jar Binaries.zip 137 KБ HTTP 
Исходные файлы Java и макроса Source.zip 137KБ HTTP 



 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 27.10.2011 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
IBM RATIONAL Rose Enterprise Floating User License + Sw Subscription & Support 12 Months
IBM RATIONAL Quality Manager Quality Professional Authorized User Single Install License + Sw Subscription & Support 12 Months
IBM RATIONAL Clearcase Floating User License + Sw Subscription & Support 12 Months
Rational ClearCase Multisite Floating User License
IBM Rational Functional Tester Floating User License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Все о PHP и даже больше
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100