暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle ora-24247进行https呼叫时

askTom 2016-04-04
648

问题描述

嗨,

我在包内进行https调用时遇到问题。它似乎不承认为访问acl所授予的特权。

当我在匿名plsql块中调用utl_http.开始_request时,或在authid定义为当前用户的过程中调用utl_http.开始_request时,我得到一个连接(尽管是一个连接抱怨缺少证书) ,但如果该过程是使用默认设置创建的(即定义)它抱怨网络访问。如果我创建了对角色的特权,我就能理解它,但在为用户创建特权时就不能理解它。是否有任何方法可以解决这个问题,否则我将不得不单独授予数据库中每个用户的访问权限



已连接到Oracle Database 11g Enterprise Edition 11.2.0.3.0版
以sdddba@dev24_DRACO身份连接

SQL>创建由acltest标识的用户acltest ;
用户已创建

SQL>授予到acltest的连接;
授权成功

SQL>将dba授予acltest ;
授权成功

SQL>声明
2 acl_nom varchar2(100) :='/sys/acls/domtest.xml';
3开始
4 dbms_网络_acl_admin.创建_acl (
5 acl => acl_nom ,
6描述=>'mytest acl',
7个主要的=>'ACLTEST',
8为_允许=>为真,
9特权=>'连接',
10 start_date =>系统时间戳,
11 end_date =>空) ;
12
13 dbms_网络_acl_admin.分配_acl(acl => acl_nom ,
14个主机=>
15下端口=> 443 ,
16上端口=> 443) ;
17结束;
18
PL/SQL过程已成功完成

SQL>声明
2 v_req utl_http.req ;
3开始
4 v_req := utl_http.开始_request('https://',
5'后',
6 utl_http.http_version_1_1) ;
7结束;
8
宣布
v_req utl_http.req ;
开始
v_req := utl_http.开始_request('https:',
'开机自检',
utl_http.http_version_1_1) ;
结束;
ORA-29273 : HTTP请求失败
ORA-06512 : "SYS.UTL_HTTP" ,行1130
ORA-29024 :证书验证失败
ORA-06512 :在第4行

SQL>将过程myproc创建为或替换为
2
2 v_req utl_http.req ;
3开始
4 v_req := utl_http.开始_request('https://preprod-ncd.mibhub.org.uk/ncd/api/v1_0/enquire',--'https://preprod-ncd.mibhub.org.uk/ncd/api/v1_0/enquire:443',
5'后',
6 utl_http.http_version_1_1) ;
7结束;
8
过程已创建

SQL> 开始
2 myproc ;
3 结束;
4
开始
myproc ;
结束;
ORA-29273 : HTTP请求失败
ORA-06512 : "SYS.UTL_HTTP" ,行1130
ORA-24247 :网络访问被访问控制列表(ACL)拒绝
ORA-06512 : "ACLEST.MYPROC" ,第4行
ORA-06512 :在第2行

SQL>将过程myproc authid当前用户创建为或替换为
2
2 v_req utl_http.req ;
3开始
4 v_req := utl_http.开始_request('https://preprod-ncd.mibhub.org.uk/ncd/api/v1_0/enquire',--'https://preprod-ncd.mibhub.org.uk/ncd/api/v1_0/enquire:443',
5'后',
6 utl_http.http_version_1_1) ;
7结束;
8
过程已创建

SQL> 开始
2 myproc ;
3 结束;
4
开始
myproc ;
结束;
ORA-29273 : HTTP请求失败
ORA-06512 : "SYS.UTL_HTTP" ,行1130
ORA-29024 :证书验证失败
ORA-06512 : "ACLEST.MYPROC" ,第4行
ORA-06512 :在第2行

专家解答

我不确定我是否理解了你的问题,但这里有一个定义程序被传递给其他用户的示例,即,我只将ACL授予ACLEST ,但SCOTT可以执行该进程,例如

SQL> conn / as sysdba
Connected.

SQL> create user acltest identified by acltest;

User created.

SQL> grant connect to acltest;

Grant succeeded.

SQL> grant dba to acltest;

Grant succeeded.

SQL> declare
  2  acl_nom varchar2(100) := '/sys/acls/domtest.xml';
  3  begin
  4  dbms_network_acl_admin.drop_acl (acl => acl_nom);
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL> declare
  2  acl_nom varchar2(100) := '/sys/acls/domtest.xml';
  3  begin
  4  dbms_network_acl_admin.create_acl (
  5  acl => acl_nom,
  6  description => 'mytest acl',
  7  principal => 'ACLTEST',
  8  is_grant => true,
  9  privilege => 'connect',
 10   start_date => systimestamp,
 11   end_date => null);
 12
 13   dbms_network_acl_admin.assign_acl(acl => acl_nom,
 14   host => '*',
 15   lower_port => 443,
 16   upper_port => 443);
 17
 18  END;
 19  /

PL/SQL procedure successfully completed.

SQL> commit;

Commit complete.

SQL> connect acltest/acltest
Connected.

SQL> create or replace procedure acltest.myproc as
  2    v_req utl_http.req;
  3  begin
  4    v_req := utl_http.begin_request('https://preprod-ncd.mibhub.org.uk/ncd/api/v1_0/enquire','POST',utl_http.http_version_1_1);
  5  end;
  6  /

Procedure created.

SQL> grant execute on acltest.myproc to public;

Grant succeeded.

SQL> connect acltest/acltest
Connected.

SQL> exec acltest.myproc
BEGIN acltest.myproc; END;

*
ERROR at line 1:
ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1130
ORA-29024: Certificate validation failure
ORA-06512: at "ACLTEST.MYPROC", line 4
ORA-06512: at line 1


SQL> connect scott/tiger
Connected.

SQL> exec acltest.myproc
BEGIN acltest.myproc; END;

*
ERROR at line 1:
ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1130
ORA-29024: Certificate validation failure
ORA-06512: at "ACLTEST.MYPROC", line 4
ORA-06512: at line 1


SQL>
SQL>
复制


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论