Проект

Общее

Профиль

Руководство системного программиста » История » Версия 45

Rustam Usmanov, 10.05.2016 11:13

1 1 Rustam Usmanov
h1. Руководство системного програмиста
2
3
{{toc}}
4
5
h2. Аннотация
6
7
В данном документе приведены общие сведения о программе "Web-сервисы Руслан", ее структура. Описаны порядок настройки и проверки программы, дополнительные возможности.
8
9 26 Rustam Usmanov
h2. Глава 1. Общие сведения о программе
10 1 Rustam Usmanov
11 16 Rustam Usmanov
Программа "Web-сервисы Руслан" предназначена для обеспечения простого и удобного доступа удалённых пользователей к ресурсам АБИС "Руслан". Удалёнными пользователями могут являться любые пользователи сервера приложений "WildFly":http://wildfly.org, на базе которого функционирует программа. Ресурсами АБИС "Руслан" являются БД, поддерживаемые сервером "Руслан" и записи, содержащиеся в этих базах данных. Доступ к ресурсам заключается в выполнении над ними следующих операций:
12 11 Rustam Usmanov
* Поиск (по протоколу "SRU 2.0":http://www.loc.gov/standards/sru/sru-2-0.html)
13 15 Rustam Usmanov
* Извлечение, модификация, создание, удаление (по протоколу "WebDAV":http://tools.ietf.org/html/rfc4918)
14 16 Rustam Usmanov
* Заказ услуги (бронирование, копия) по найденному библиографическому описанию (по протоколу "NCIP v. 2.0.2":http://www.ncip.info/)
15 1 Rustam Usmanov
16 11 Rustam Usmanov
Операции, связанные с чтением данных с ограниченным доступом и записью данных, требуют наличия соответствующих прав у пользователя, а следовательно и идентификации пользователя. Идентификация пользователя осуществляется при помощи провайдера идентификации по протоколу SAML 2.0.
17 1 Rustam Usmanov
18 11 Rustam Usmanov
Взаимодействие с сервером "Руслан" осуществляется по протоколу Z39.50.
19
20 12 Rustam Usmanov
Ресурсы представляются в двух форматах: XML и JSON, в зависимости от предпочтений пользователя.
21 1 Rustam Usmanov
22 40 Rustam Usmanov
Программа может функционировать на любых технических средствах под управлением сервера приложений *WildFly 8.2.**. После установки сервера WildFly необходимо убедиться в том, что установленный "статический модуль":https://docs.jboss.org/author/display/WFLY8/Glossary+--+Module "*PicketLink*":http://picketlink.org имеет версию не ниже *2.7.0.Final*. При необходимости следует "обновить этот модуль":http://picketlink.org/gettingstarted/.
23 38 Rustam Usmanov
24
Обязательным требованием для выполнения программы является возможность сетевого взаимодействия с сервером "Руслан" и с сервером *Oracle*, используемым АБИС "Руслан".
25
26 26 Rustam Usmanov
h2. Глава 2. Структура программы
27 1 Rustam Usmanov
28 12 Rustam Usmanov
Программа "Web-сервисы Руслан" состоит из следующих компонентов:
29
30 14 Rustam Usmanov
# @jrzs-ear*.ear@ - Z39.50-клиент, реализованный в виде EJB.
31 12 Rustam Usmanov
# @ridp*.war@ - провайдер идентификации.
32
# @rrs-web*.war@ - Web-интерфейс ресурсов АБИС "Руслан"
33
34 26 Rustam Usmanov
h2. Глава 3. Настройка программы
35 1 Rustam Usmanov
36 26 Rustam Usmanov
h3. 3.1. Установка программы
37 19 Rustam Usmanov
38 16 Rustam Usmanov
Установка программы заключается в "развёртывании компонентов программы на сервере приложений WildFly":https://docs.jboss.org/author/display/WFLY8/Application+deployment.
39 1 Rustam Usmanov
40 26 Rustam Usmanov
h3. 3.2. Настройка программы
41 19 Rustam Usmanov
42 26 Rustam Usmanov
h4. 3.2.1. Настройка сервера приложений WildFly
43 21 Rustam Usmanov
44 26 Rustam Usmanov
h5. 3.2.1.1. Настройка источников данных
45 21 Rustam Usmanov
46 32 Rustam Usmanov
Все источники данных Oracle, используемые сервером Руслан, должны быть "включены в конфигурацию сервера приложений WildFly":https://docs.jboss.org/author/display/WFLY8/DataSource+configuration. Следует обратить внимание на то, что настройка источников данных предусматривает "установку":https://docs.jboss.org/author/display/WFLY8/Application+deployment "JDBC драйвера Oracle":http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html. Пример результата настройки источников данных, отражённого в конфигурационном файле сервера приложений WildFly, приведён в [[Руководство системного програмиста#Источники данных|Приложении 1]].
47 29 Rustam Usmanov
48 28 Rustam Usmanov
h5. 3.2.1.2 Настройка доменов безопасности
49 33 Rustam Usmanov
50 1 Rustam Usmanov
В "подсистему безопасности сервера приложений WildFly":https://docs.jboss.org/author/display/WFLY8/Security+subsystem+configuration необходимо "добавить два домена безопасности":https://docs.jboss.org/author/display/WFLY8/Security+subsystem+configuration#Securitysubsystemconfiguration-securitydomains с именами @idp@ и @sp@. Первый используется провайдером идентификации, второй - Web-интерфейсом ресурсов АБИС "Руслан".
51 33 Rustam Usmanov
52 38 Rustam Usmanov
Аутентификацию в домене безопасности @idp@ необходимо настроить с использованием модуля входа Z39.50 (класс @com.ols.auth.Z3950LoginModule@). Этот модуль позволяет осуществлять аутентификацию любых пользователей АБИС "Руслан". В Таблице 3-1 представлены параметры модуля входа Z39.50, их назначение и примеры значений.
53 33 Rustam Usmanov
54 34 Rustam Usmanov
Таблица 3-1. Параметры модуля входя Z39.50
55 33 Rustam Usmanov
|_.Параметр|_.Назначение|_.Значение|
56 34 Rustam Usmanov
|orgId|Уникальный идентификатор организации. Рекомендуется использовать национальный код библиотеки. Значение этого параметра должно совпадать со значением параметра @Org899@ сервера "Руслан"|@19013582@|
57 36 Rustam Usmanov
|zHost|Адрес сервера Z39.50. Значение этого параметра должно совпадать со значением параметра @Host@ сервера "Руслан".|@testbed.ruslan.ru@|
58
|zPort|Порт сервера Z39.50. Значение этого параметра должно совпадать со значением параметра @Port@ сервера "Руслан".|@210@|
59
|zClientBinding|JNDI-имя Z39.50-клиента, реализованного в виде EJB.|@java:global/jrzs/jrzs-ejb/ZClient@|
60
|debug|Управление выводом отладочных сообщений в журнал.|@true@
61 34 Rustam Usmanov
@false@|
62 33 Rustam Usmanov
63 37 Rustam Usmanov
Аутентификацию в домене безопасности @sp@ необходимо настроить с использованием модуля входа SAML2 (класс @org.picketlink.identity.federation.bindings.wildfly.SAML2LoginModule@).
64
65 33 Rustam Usmanov
Пример результата настройки доменов безопасности, отражённого в конфигурационном файле сервера приложений WildFly, приведён в [[Руководство системного програмиста#Домены безопасности|Приложении 1]].
66 28 Rustam Usmanov
67 42 Rustam Usmanov
h4. 3.2.2. Настройка провайдера идентификации
68 41 Rustam Usmanov
69 1 Rustam Usmanov
Настройка провайдера идентификации заключается в редактировании "конфигурационного файла WEB-INF/picketlink.xml":https://docs.jboss.org/author/display/PLINK/Identity+Provider+Configuration#IdentityProviderConfiguration-Thepicketlink.xmlconfigurationfile, включённого в @ridp*.war@. Как минимум, необходимо указать значения параметров @PicketLinkIDP/IdentityURL@ и @PicketLinkIDP/Trust/Domains@, зависящие от конкретных условий эксплуатации. В первом из них необходимо указать адрес провайдера идентификации (например, @https://host.domain/ridp/@). Во втором - список доменов, разделённых запятой, с которыми установлены доверительные отношения (например, @domain1,domain2@).
70 42 Rustam Usmanov
71
h4. 3.2.3. Настройка Web-интерфейса ресурсов АБИС "Руслан"
72
73
h5. 3.2.3.1 Настройка провайдера услуг
74
75
Web-интерфейс ресурсов АБИС "Руслан" является реализацией провайдера услуг. Для успешного взаимодействия с провайдером идентификации требуется его настройка, которая заключается в редактировании "конфигурационного файла WEB-INF/picketlink.xml":https://docs.jboss.org/author/display/PLINK/Service+Provider+Configuration#ServiceProviderConfiguration-Thepicketlink.xmlconfigurationfile, включённого в @rrs-web*.war@. Как минимум, необходимо указать значения параметров @PicketLinkSP/IdentityURL@ и @PicketLinkSP/ServiceURL@, зависящие от конкретных условий эксплуатации. В первом из них необходимо указать адрес провайдера идентификации (например, @https://host.domain/ridp/@). Во втором - адрес провайдера услуг (например, @https://host.domain/rrs-web/@).
76 41 Rustam Usmanov
77 43 Rustam Usmanov
h5. 3.2.3.2 Настройка связи с СУБД
78
79 45 Rustam Usmanov
Настройка связи с СУБД заключается в редактировании "дескриптора хранения данных WEB-INF/classes/META-INF/persistence.xml":http://java.sun.com/xml/ns/persistence, включённого в @rrs-web*.war@. В этом дескрипторе необходимо определить модули хранения данных (persistence-unit), связав их с [[Руководство системного програмиста#3.2.1.1. Настройка источников данных|ранее определёнными источниками данных]].
80 43 Rustam Usmanov
81 4 Rustam Usmanov
h2. Перечень сокращений
82 1 Rustam Usmanov
83
table{border:none}.
84 18 Rustam Usmanov
|EJB|Enterprise JavaBeans|
85 35 Rustam Usmanov
|JNDI|Java Naming and Directory Interface|
86 1 Rustam Usmanov
|JSON|JavaScript Object Notation|
87 16 Rustam Usmanov
|NISO|National Information Standards Organization|
88
|NCIP|NISO Circulation Interchange Protocol|
89 1 Rustam Usmanov
|XML|The Extensible Markup Language|
90 19 Rustam Usmanov
|АБИС|Автоматизированная библиотечно-информационная система|
91 1 Rustam Usmanov
|БД|База данных|
92 43 Rustam Usmanov
|СУБД|Система управления базами данных|
93 23 Rustam Usmanov
94
h2. Приложение 1. Конфигурационный файл сервера приложений WildFly
95
96
h3. Источники данных
97 31 Rustam Usmanov
98 23 Rustam Usmanov
<pre><code class="xml">
99
<subsystem xmlns="urn:jboss:domain:datasources:2.0">
100
  <datasources>
101
    <datasource jta="false" jndi-name="java:jboss/datasources/ruslan" pool-name="ruslan" enabled="true" use-ccm="false">
102
      <connection-url>jdbc:oracle:thin:@oracle.test.org:1521/ORA11</connection-url>
103
      <driver-class>oracle.jdbc.OracleDriver</driver-class>
104
      <driver>ojdbc6.jar</driver>
105
      <security>
106
        <user-name>libmgr</user-name>
107
        <password>libmgr_pwd</password>
108
      </security>
109
      <validation>
110
        <validate-on-match>false</validate-on-match>
111
        <background-validation>false</background-validation>
112
      </validation>
113
      <statement>
114
        <share-prepared-statements>false</share-prepared-statements>
115
      </statement>
116
    </datasource>
117
    <datasource jta="false" jndi-name="java:jboss/datasources/lib1" pool-name="lib1" enabled="true" use-ccm="false">
118
      <connection-url>jdbc:oracle:thin:@oracle.test.org:1521/ORA11</connection-url>
119
      <driver-class>oracle.jdbc.OracleDriver</driver-class>
120 27 Rustam Usmanov
      <new-connection-sql>alter session set current_schema=lib1</new-connection-sql>
121 23 Rustam Usmanov
      <driver>ojdbc6.jar</driver>
122
      <security>
123
        <user-name>lib1</user-name>
124
        <password>lib1_pwd</password>
125
      </security>
126
      <validation>
127
        <validate-on-match>false</validate-on-match>
128
        <background-validation>false</background-validation>
129
      </validation>
130
      <statement>
131
        <share-prepared-statements>false</share-prepared-statements>
132
      </statement>
133
    </datasource>
134 1 Rustam Usmanov
  </datasources>
135 30 Rustam Usmanov
</subsystem>
136
</code></pre>
137
138
h3. Домены безопасности
139 31 Rustam Usmanov
140 30 Rustam Usmanov
<pre><code class="xml">
141
<subsystem xmlns="urn:jboss:domain:security:1.2">
142
  <security-domains>
143
    <security-domain name="idp" cache-type="default">
144
      <authentication>
145
        <login-module code="com.ols.auth.Z3950LoginModule" flag="required">
146
          <module-option name="orgId" value="1"/>
147
          <module-option name="zHost" value="testbed.ruslan.ru"/>
148
          <module-option name="zPort" value="210"/>
149
          <module-option name="zClientBinding" value="java:global/jrzs/jrzs-ejb/ZClient"/>
150
          <module-option name="debug" value="false"/>
151
        </login-module>
152
      </authentication>
153
    </security-domain>
154
    <security-domain name="sp" cache-type="default">
155
      <authentication>
156
        <login-module code="org.picketlink.identity.federation.bindings.wildfly.SAML2LoginModule" flag="required"/>
157
      </authentication>
158
    </security-domain>
159
  </security-domains>
160 23 Rustam Usmanov
</subsystem>
161
</code></pre>