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 довольно?

1 ответ

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

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

-- 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'

Другие вопросы по тегам