【问题标题】:Retrieve User's Password in Oracle Apex (v21.1)在 Oracle Apex (v21.1) 中检索用户密码
【发布时间】:2021-11-03 15:09:57
【问题描述】:

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

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

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

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

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

我尝试在登录页面中设置分支进程,同时重定向用户的主页,并设置值 的:P9999_PASSWORD 字段到主页文本字段P1_PWD

所以,我尝试使用文本字段调整我的代码

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

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

为页面项目 P1_GROUP 计算项目源值时出错

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

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

再次感谢您的宝贵时间,请随时询问更多详细信息,因为这是一个非常具体的案例,

托马斯

【问题讨论】:

  • 我的情况和你一样,我能找到的唯一解决方案是将用户/密码存储在一个带有加密的表中以确保安全,而无需在我的自定义身份验证过程中调用 LDAP。
  • 不是一个答案,但是... 作为一个非常基本的安全规则,用户密码永远不会暴露,即使在代码中也是如此。您是否希望在您知道开发人员将以明文形式读取您的密码的系统上?
  • 任何,我的意思是 ANY 允许恢复/显示密码的系统 - 按定义 - 一个不安全的系统。时期。句号。

标签: oracle authentication ldap passwords oracle-apex


【解决方案1】:

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

我们找到了一个我们认为可靠的解决方案,如果它可以帮助其他人,我们会采取以下措施。

  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

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

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

【讨论】:

  • 不要使用用户的凭据 - 这是一种不安全的做法。 @eaolson 描述了正确的方法。
  • 我相信最好的做法是创建一个应用程序用户,可以说是一个专用的系统帐户,然后用它来完成其余的工作。您的方法将花费您的时间和精力在您第一次 IT 审核后立即进行重建。
【解决方案2】:

我不认为你的方法是正确的。理想情况下,即使是系统管理员也不能解密用户的密码;它们应该存储为哈希值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2022-01-06
    • 2018-03-12
    • 2019-11-27
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    相关资源
    最近更新 更多