【发布时间】:2021-11-03 15:09:57
【问题描述】:
自从我发布了关于 LDAP 身份验证的 2 篇文章(first post、second 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