oracle 19c apex 19.1 ошибка конфигурации openid connect ORA-24247: доступ к сети запрещен списком управления доступом (ACL)

Я создал новое приложение APEX 19.1, выбрав функцию Access Control Enable role-based user authorization. Схемы аутентификации по умолчанию Application Express Authentication работают нормально. Но когда я меняю его на OpenID Connect и запускаю приложение, я получаю следующую ошибку

- ora_sqlerrm: ORA-29273: HTTP request failed
ORA-06512: at "APEX_190200.WWV_FLOW_WEB_SERVICES", line 1283
ORA-06512: at "APEX_190200.WWV_FLOW_WEB_SERVICES", line 924
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1148
ORA-06512: at "APEX_190200.WWV_FLOW_WEB_SERVICES", line 902
ORA-06512: at "APEX_190200.WWV_FLOW_WEB_SERVICES", line 1136
ORA-06512: at "APEX_190200.WWV_FLOW_WEB_SERVICES", line 1473
ORA-06512: at "APEX_190200.WWV_FLOW_WEBSERVICES_API", line 416
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION_SOCIAL", line 79
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION_SOCIAL", line 145
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION_SOCIAL", line 244
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION_NATIVE", line 485
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION_NATIVE", line 1256
ORA-06512: at "APEX_190200.WWV_FLOW_PLUGIN", line 2840
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION", line 1970

и это обратная трассировка ошибки

- error_backtrace: ORA-06512: at "APEX_190200.WWV_FLOW_WEB_SERVICES", line 1283
ORA-06512: at "APEX_190200.WWV_FLOW_WEB_SERVICES", line 924
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1148
ORA-06512: at "APEX_190200.WWV_FLOW_WEB_SERVICES", line 902
ORA-06512: at "APEX_190200.WWV_FLOW_WEB_SERVICES", line 1136
ORA-06512: at "APEX_190200.WWV_FLOW_WEB_SERVICES", line 1473
ORA-06512: at "APEX_190200.WWV_FLOW_WEBSERVICES_API", line 416
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION_SOCIAL", line 79
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION_SOCIAL", line 145
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION_SOCIAL", line 244
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION_NATIVE", line 485
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION_NATIVE", line 1256
ORA-06512: at "APEX_190200.WWV_FLOW_PLUGIN", line 2840
ORA-06512: at "APEX_190200.WWV_FLOW_AUTHENTICATION", line 1970
ORA-06512: at "APEX_190200.WWV_FLOW", line 4058

Я пробовал следующий способ решения ошибки

BEGIN
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace => xs$ace_type(privilege_list => xs$name_list('connect'),
                           principal_name => 'apex_db_user',
                           principal_type => xs_acl.ptype_db));
END;
/

Заявление продолжается, но я получаю ту же ошибку.

Тогда я подумал, может быть, потому что я не использую SSL. Поэтому я изменил файл default.xml и добавил следующую запись

<entry key="security.verifySSL">false</entry>

Я новичок в APEX, поэтому, вероятно, мне что-то не хватает. Достаточно ли этой функции Access Control Enable role-based user authorization?


person Reactive_learner    schedule 30.06.2020    source источник
comment
Привет, вы используете социальный вход в качестве метода аутентификации? К конкретному провайдеру Oauth2 ?? или одна из вашей собственной организации ??   -  person Roberto Hernandez    schedule 30.06.2020
comment
@RobertoHernandez Я использую социальный вход в качестве типа схемы аутентификации, а затем в разделе Authentication Provider я выбрал OpenId Connect Provider и использую единый вход в организации, который действует как сервер OpenId Connect.   -  person Reactive_learner    schedule 01.07.2020


Ответы (1)


Это тема безопасности в Oracle, все сетевые привилегии для схем по умолчанию закрыты.

Используя sys в качестве учетной записи sysdba, выполните приведенный ниже код. Не забудьте изменить имя схемы и домен.

-- Execute as sysdba
DECLARE
  l_acl       VARCHAR2(100) := 'aclname.xml';
  l_desc      VARCHAR2(100) := 'description';
  l_principal VARCHAR2(30)  := 'APEX_SCHEMANAME'; -- UPPERCASE if applies
  l_host      VARCHAR2(100) := 'yourdomain.com'; --hostname to reach
BEGIN

  -- Connection rights
  dbms_network_acl_admin.create_acl(l_acl, l_desc, l_principal, TRUE, 'connect');
 
  -- DNS resolution privilege
  dbms_network_acl_admin.add_privilege(l_acl, l_principal, TRUE, 'resolve');
 
  dbms_network_acl_admin.assign_acl(l_acl, l_host);
 
  COMMIT;
END;

Вы можете узнать имя схемы, выполняя следующий запрос.

    SELECT TABLE_OWNER FROM all_synonyms
WHERE SYNONYM_NAME = 'WWV_FLOW' and OWNER = 'PUBLIC'

введите описание изображения здесь

person Enrique Flores    schedule 02.07.2020
comment
Спасибо Энрике за ответ. Я успешно выполнил этот код, но все равно получаю ту же ошибку. Я подозреваю, что у меня слишком много файлов acl xml. Это должно быть связано с сетью, потому что я не видел журналов в sso - person Reactive_learner; 06.07.2020