【发布时间】:2020-11-01 04:48:29
【问题描述】:
让我解释一下发生了什么:
- 数据库:Oracle 19c
- 顶点:19.1.0.00.15
- ORDS 独立是 19.1.0.r0921545
我完成了将 Apex 社交登录配置到 Microsoft AAD 的任务,几乎没有任何问题:
- 我在 Apex 中创建了身份验证方法。
- 我在 Azure 中注册了我的应用程序并获取了 Web 凭据。
- 我使用根 CA Microsoft 证书在我的数据库中创建了一个钱包,并配置了实例设置以使用该钱包。
- 我在数据库服务器中的钱包包含属性 auto_login 以避免使用密码。
- 我创建了 ACE 条目以允许连接到端口 443 中的 login.microsoftonline.com
- 尽管对于问题本身的目的和产生的错误而言并不重要,但请评论我在内部工作区中配置了钱包设置,以便为 apex 应用程序提供对钱包的访问。
几个星期以来,这个过程运行良好,我在不同的工作区中为我的所有 apex 应用程序提供了一个完美的 Single Sing on 机制。但是,从几天前开始,我总是遇到同样的错误:
ORA-29024:证书验证失败
经过一番挖掘,我意识到有人为传出流量配置了代理。在尝试使用 Apex 之前,我使用 APEX_WEB_SERVICE 尝试了 SQL
使用代理设置请求 login.microsoftonline.com
select apex_web_service.make_rest_request(
p_url => 'https://login.microsoftonline.com',
p_http_method => 'GET',
p_wallet_path => 'file:/home/oracle/wallet',
p_wallet_pwd => 'MyPassword' ,
p_proxy_override => 'http://myproxy:myport'
7 ) from dual;
ERROR:
ORA-29273: HTTP request failed
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1035
ORA-29024: Certificate validation failure
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1148
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 934
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1580
ORA-06512: at "APEX_190100.WWV_FLOW_WEBSERVICES_API", line 408
ORA-06512: at line 1
请求没有代理设置,只是看看我能不能到达那里
SQL> select apex_web_service.make_rest_request(
2 p_url => 'https://login.microsoftonline.com',
3 p_http_method => 'GET',
4 p_wallet_path => 'file:/home/oracle/wallet'
5* ) from dual
SQL> /
ERROR:
ORA-29273: HTTP request failed
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1035
ORA-29024: Certificate validation failure
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1148
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 934
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1580
ORA-06512: at "APEX_190100.WWV_FLOW_WEBSERVICES_API", line 408
ORA-06512: at line 1
使用代理设置请求谷歌
select apex_web_service.make_rest_request(
p_url => 'https://google.com',
p_http_method => 'GET',
p_wallet_path => 'file:/home/oracle/wallet',
p_wallet_pwd => 'MyPassword' ,
6 p_proxy_override => 'http://myproxy:myport'
7 ) from dual ;
ERROR:
ORA-29273: HTTP request failed
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1035
ORA-29024: Certificate validation failure
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1148
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 934
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1580
ORA-06512: at "APEX_190100.WWV_FLOW_WEBSERVICES_API", line 408
ORA-06512: at line 1
在没有代理设置的情况下向 google 请求
SQL> select apex_web_service.make_rest_request(
2 p_url => 'https://google.com',
3 p_http_method => 'GET',
4 p_wallet_path => 'file:/home/oracle/wallet'
5* ) from dual
SQL> /
ERROR:
ORA-29273: HTTP request failed
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1035
ORA-12535: TNS:operation timed out
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1148
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 934
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1580
ORA-06512: at "APEX_190100.WWV_FLOW_WEBSERVICES_API", line 408
ORA-06512: at line 1
我的问题如下:
- 这是关于入站/出站的网络问题或代理问题 交通 ?当我不指定代理时,我可以在端口 443 中访问 Microsoft,但不能访问 Google。
- 为什么我得到无效的证书,而它与它无关 证书?
- 如何设置我的 APEX 以在 Azure 或任何其他设备上使用身份验证 当我在中间有代理时,提供者?
- 当我单独使用 ORDS 时,我是否允许继续使用它,或者我需要一个 使用 Tomcat 的反向代理?
我尝试通过运行将 ACE 配置为在端口中使用 HTTP_PROXY
begin
sys.dbms_network_acl_admin.append_host_ace(
host => 'myproxyserver'
,lower_port => 8080
,upper_port => 8080
,ace => xs$ace_type(
privilege_list => xs$name_list('http_proxy')
,granted => true
,principal_name => 'MY_PRINCIPAL'
,principal_type => XS_ACL.PTYPE_DB
)
);
end;
/
即使我授予 ACE 对钱包的特权
SET SERVEROUTPUT ON
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE
(
WALLET_PATH => 'file:/home/oracle/wallet',
ACE => XS$ACE_TYPE(
PRIVILEGE_LIST => XS$NAME_LIST('use_passwords','use_client_certificates'),
PRINCIPAL_NAME => 'MY_PRINCIPAL',
PRINCIPAL_TYPE => XS_ACL.PTYPE_DB
)
);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error while configuring ACL for wallet: '|| SQLERRM);
END;
/
但我仍然遇到同样的错误。
任何帮助将不胜感激! 谢谢
【问题讨论】:
标签: oracle oracle-apex