oracle apex 18.2自定义身份验证和授权

时间:2018-10-30 15:47:58

标签: oracle-apex oracle12c

我正在oracle Apex 18.2中开发一个小型ERP,我想实现以下所列的自定义安全性

1)用户应从自定义表进行身份验证

2)身份验证后,应根据“自定义表”中的“分配的角色”向用户授权应用程序

3)用户必须具有对表的READ,INSERT,UPDATE和DELETE操作的授权

例如Image

根据我的小知识,我做了一些谷歌搜索,但有很多令人困惑的选项,需要建议和建议。

1 个答案:

答案 0 :(得分:4)

1)用户应从自定义表进行身份验证

  • 创建身份验证方案并将方案类型设置为Custom
  • 实施身份验证功能,并将代码放置在“ PL / SQL代码”部分中。该功能随附从登录页面输入的用户名和密码。使用它来验证匹配。始终加密用户密码。函数根据结果返回true或false。

以下是可用的示例代码,并从“页面构建器”的帮助文本中复制了该代码:

function my_authentication (
    p_username in varchar2,
    p_password in varchar2 )
    return boolean
is
    l_user my_users.user_name%type := upper(p_username);
    l_pwd  my_users.password%type;
    l_id   my_users.id%type;
begin
    select id  , password
    into l_id, l_pwd
    from my_users
    where user_name = l_user;
    return l_pwd = rawtohex(sys.dbms_crypto.hash (
                    sys.utl_raw.cast_to_raw(p_password||l_id||l_user),
                    sys.dbms_crypto.hash_sh512 ));
exception
    when NO_DATA_FOUND then return false;
end;
  • 将真实功能设置为my_authentication

2)身份验证之后,应根据“自定义表”中的“分配的角色”授权用户使用应用程序

  • 再次在PL / SQL代码区域中,执行身份验证后的过程,例如post_login,它检索用户的角色并将其添加到应用程序项或APEX集合中。
  • 将过程名称添加到“验证后的过程名称”字段,例如post_login
  • 根据上述值创建授权方案。

OR

只需创建一个“授权方案”即可简单地即时查询相同的信息,但是根据调用这些授权的频率可能会降低性能。

3)用户必须具有对表的READ,INSERT,UPDATE和DELETE操作的授权

  • 您可以基于授权方案限制页面,页面项(只读或可编辑),按钮和进程。
  • 根据您的Oracle许可证,您还可以实施Oracle Real Application Security(RAS)或虚拟专用数据库(VPD)来在“数据库级”管理访问,这绝对是更安全的。