在用PL / SQL和Oracle Forms 6i编写的大型旧版应用程序中,我要解决以下业务问题:
不允许用户使用其数据库帐户登录。
整个应用程序大约有50个使用其数据库帐户的用户。审计部门不允许用户知道其数据库帐户密码。
重写应用程序以使用新的用户权限逻辑(使用诸如USERS的表,仅一个数据库用户,等等)是不可能的,因为它工作量太大。
我考虑过以下使用现有数据库用户的解决方案:
使用用户名和新密码创建表USERS,并以某种方式使用代理用户。在一个程序包中,应用程序将检查提供的密码是否与表USERS一致,然后以50个数据库用户中的1个进行连接-因此所有应用程序逻辑和用户权限都可以保持不变。
但是这种解决方法有一个问题-您不能在软件包中使用“连接”。所以我不能使用它。
begin
IF
p_in_user == USER2 AND p_in_pass == XXX
THEN
EXECUTE IMMEDIATE 'conn USER2/Password123'; -- doesn't work,using a proxy neither
END IF;
END;
有人有什么想法吗?