在 Oracle Apex (v21.1) 中检索用户密码

Retrieve User's Password in Oracle Apex (v21.1)

自从我 2 post 关于 LDAP 身份验证 (first post, ) 以来,我们创建了自己的自定义身份验证方案和功能,以使用我们的 Active Directory 凭据连接到应用程序。

我们可以成功登录应用程序。但是,我们有第二个函数可以检索 AD 中的用户组。这是我尝试将组检索到文本字段 (P1_GROUP) 时的代码:

ourschema.ldap_get_group_apex_from_user(
    p_username => v('APP_USER'),
    p_password => 'thepassword')

如您所见,这是有效的,因为密码在 static 文本中。这引出了我的主要问题:

如何在 Oracle Apex 中找回用户密码,最安全的方法是什么?

我尝试在登录页面中设置 BranchProcess,同时重定向用户的主页,并且将 :P9999_PASSWORD 字段的值 设置为主页文本字段 P1_PWD.

因此,我尝试使用文本字段调整我的代码

ourschema.ldap_get_group_apex_from_user(
    p_username => v('APP_USER'),
    p_password => :P1_PWD)

不幸的是,这似乎不安全,因为密码会在页面的 HTML 代码中可见(右键单击 + 检查就可以看到。此外,有时它会给我一个错误

Error computing item source value for page item P1_GROUP

应用程序似乎无法执行该功能,因为密码仍未初始化。

有没有办法检索 :P9999_PASSWORD 或将其从登录页面传输到全局 variable/global 页面或文本字段?或者有找回当前用户密码的功能吗?

再次感谢您抽出宝贵时间,请不要犹豫,询问更多详情,因为这是一个非常具体的案例,

托马斯

我认为你的做法不对。理想情况下,即使是系统管理员也不能解密用户的密码;它们应该存储为散列。

您正在尝试查找用户的群组成员资格?您不需要用户自己的凭据来执行此操作。 使用可以访问您的 Active Directory 系统的专用帐户,并将该密码加密存储在您的数据库中。使用该帐户搜索和查找用户的组成员身份。这样,即使您的系统遭到入侵,也只会暴露该帐户。

感谢大家对我的案例的回答和建议,以及抽出时间提供帮助。

我们找到了一个我们认为可靠的解决方案,以下是我们所做的,如果它可以帮助其他人。

  1. 我们创建了一个全局变量G_GROUP,它将接收用户所在的组

  2. 在登录页面上,我们在登录过程之前创建了一个过程。

  3. 将进程的 Source 设置为 PL/SQL Code :

:G_GROUP := pdbadmin.ldap_get_group_apex_from_user( --our custom function to retrieve groups
    p_username => :P9999_USERNAME,
    p_password => :P9999_PASSWORD); -- the function get the username and password in the fields
  1. 如果我想在主页中显示用户组,让我们创建一个 文本字段 P1_GROUP,至于 Source PL/SQL 表达式 :G_GROUP

我们的群已初始化,密码未显示在任何字段中。

让我知道你的想法,如果你们认为这可以改进。