【问题标题】:Why is Perl using LDAP?为什么 Perl 使用 LDAP?
【发布时间】:2021-04-16 08:09:13
【问题描述】:

在我目前的角色中继承的东西中有一个古老的 Perl CGI Web 应用程序(大约 2002 年)。连接到 Oracle 数据库。它似乎使用同样古老的 LDAP 服务器来解析 Oracle 数据库。以前,这里的一切都使用 LDAP 服务来检索 TNS 连接定义。我们已迁移所有其他内容以使用更简单的基于 DNS 名称的连接字符串。我想对 Perl 代码做同样的事情。

但我在 Perl 代码中找不到对 LDAP 服务器的任何引用。

我可以在发出的 HTTP 请求(以及因此执行的 perl 代码)和到 LDAP 服务器的连接之间建立直接关联。

查看代码,DBI 构造函数如下所示:

$dbh = DBI->connect("DBI:Oracle:DB","username","password", {RaiseError => 1,AutoCommit => 1}) || die("Connecting to oracle");

(但对于 DB、用户名和密码使用不同的文字)。

显然这是使用 TNS 定义,但我看不出 Perl 是如何知道在 LDAP 服务中查找 TNS 定义的,也没有任何迹象表明它应该在哪里找到 LDAP 服务。

我查看了所有引用的 Perl 模块文件,但看不到任何对“LDAP”或 LDAP 主机的引用。

(但我确实扫描了整个文件系统以查找 tnsnames.ora 文件,除了 Oracle 客户端安装中的示例文件之外没有找到其他文件)。

我还应该去哪里寻找?

【问题讨论】:

  • 如果不查看代码库或系统设置,很难猜测发生了什么。有时要求凭据的东西会为您调用 LDAP(但也可以询问 Active Directory 或其他)。调查如何获得用户是我在黑暗中的最佳选择。
  • 有sqlnet.ora文件吗?我希望您的服务器有一个包含 LDAP 的 names.directory_path 设置。然后可能还有一些names.ldap_* 设置。
  • 如果您使用 LDAP 服务器来解析别名,那么您不需要任何 tnsnames.ora 文件。在您的系统中搜索sqlnet.ora
  • 根据 DBD::Oracle,DB 是本地数据库的 SID 或服务名称、在 TNSNAMES.ORA 文件中定义的服务名称或 @987654329 形式的 EZCONNECT url @。但这可能并不详尽。见this
  • @JustinCave 感谢您在评论之前实际阅读我的问题 - 再次感谢您为我指出完全正确的方向。问题解决了。如果您将此作为答案发布,我会接受。

标签: oracle perl ldap


【解决方案1】:

我希望您会在具有包含 LDAP 的 names.directory_path 设置的服务器上找到一个 sqlnet.ora 文件。该文件中可能还会有一些names.ldap_* 设置。

【讨论】:

    猜你喜欢
    • 2013-09-27
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多