oracle - тратить webservice soap

После того, как привет скроллировали пример следующей страницы https://oracle-base.com/articles/9i/consuming-web-services-9i

oracle developer производит мне ошибку с acl, что скажи себе следующее:

ORA-29273: fallo de la solicitud HTTP
ORA-06512: en "SYS.UTL_HTTP", línea 1130
ORA-24247: acceso de red denegado por la lista de control de acceso (ACL)
ORA-06512: en "xxxxxx.SOAP_API", línea 150
ORA-06512: en "xxxxx.ADD_NUMBERS", línea 34
         29273. 00000 -  "HTTP request failed"
*Cause:    The UTL_HTTP package failed to execute the HTTP request.
*Action:   Use get_detailed_sqlerrm to check the detailed error message.
       Fix the error and retry the HTTP request.

Как я могу решать это? Что они рекомендуют мне?

1
задан 10.09.2019, 11:46
1 ответ

Первое: Я не понимаю из-за qué ты продолжаешь пример Oracle 9i, если estÃ: s используя Oracle 11g.

Ошибка автообъяснительная. Ты должен строить контрольный перечень доступа и распределять вышеупомянутое разрешение пользователю, которому ты хочешь позволить доступ к внешним ресурсам через HTTP.

В Oracle 11g, использовать любой из этих пакетов требует этого configuraci¦n:

UTL_TCP
UTL_SMTP
UTL_MAIL
UTL_HTTP
UTL_INADDR

, Чтобы санкционировать, что этот configuraci¦n не был сделан, один выполняет эту консультацию:

 SELECT * FROM dba_network_acls;

creaci¦n ACL - процедура с двумя шагами. Первый шаг состоит в том, чтобы создавать ACL и определять привилегии, которые ему нужно давать. Синтаксис estÃ: ndar он:

BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl => "file_name.xml",
description => "file description",
principal => "user_or_role",
is_grant => TRUE|FALSE,
privilege => "connect|resolve",
start_date => null|timestamp_with_time_zone,
end_date => null|timestamp_with_time_zone);
END;

Стоимость connect для parÃ: метр privilege включает resolve!, который необходим для пакета UTL_INTADDR.

  • parÃ: метр principal определяет первый username, который распределяет ему ACL и есть вступите в брак sensitive!
  • , Если хочется распределять его в múltiples пользователи, должен использовать привилегию DBMS_NETWORK_ACL.ADD_PRIVILEGE для añadir пользователи.

Пример creaci¦n ACL с данными:

BEGIN
 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
  acl => 'sysdba-ch-permissions.xml',
  description => "Permissions for sysdba network',
  principal => "LUTZ',
  is_grant => TRUE,
  privilege => 'connect');
END;

Это создает файл xml со списком пользователей и привилегий. Он помещен под /sys/acl/ в BD XML. Â: Какой c¦mo я узнал, что ты используешь Oracle 11g? Потому что эта ошибка не происходит в Oracle 9i, нет BD XML в 9i и нет умрите - grained access контроль (контроль доступа к внешним ресурсам используя HTTP).

Второй шаг состоит в том, чтобы распределять network hosts ACL. Синтаксис estÃ: ndar он:

BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl => "file_name.xml",
host => "network_host",
lower_port => null|port_number,
upper_port => null|port_number);
END;

И пример с данными:

BEGIN
 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
  acl => 'sysdba-ch-permissions.xml',
  host => "*.sysdba.ch',
  lower_port => 80,
  upper_port => null);
END;

Aquà - нужно иметь в виду, что:

  • возможный использовать wildcards в parÃ: метр hosts. Позволь доступ ко всем hosts в данном домене.
  • Остнамес Сон вступил в брак - sensitive
  • Может использовать IP или hostname DNS.
  • S¦lo ACL смоги быть распределенным host или домену или subnet IP или ранг портов
  • Может распределять múltiples hosts ту же ACL призывая DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL múltiples разы.
2
ответ дан 11.11.2019, 01:15

Теги

Похожие вопросы