【问题标题】:"OS Authentication" delphi“操作系统身份验证”德尔福
【发布时间】:2014-07-17 15:34:24
【问题描述】:

我在 Windows 7 主机上运行 Oracle XE 11g 我能够使用 SQLPlus 中的 OS 身份验证连接到 Oracle 我可以使用带有用户名和密码的 TSQLConnection 在 Delphi 中连接到 Oracle

当我将 SQLConnection.Params 中的用户名和密码设为空白并将 OSAuthentication 和/或 OS 身份验证(所有组合)参数设置为 True 并尝试将 Connected 设置为 True 时,我得到:

ORA-01017:用户名/密码无效;登录被拒绝;

有没有人通过使用 Delphi 和 dbExpress 的 OS 身份验证连接到 Oracle?

【问题讨论】:

  • TSQLConnection 使用与调用线程关联的用户,除非另有说明。因此,在使用空白用户名/密码连接时尝试使用 Win32 模拟。
  • 我不熟悉 Win32 模拟。与调用线程关联的用户不会是 %userdomain%\%username% 吗?当我调用 Windows API 来获取这些值时,它们就是我的 Oracle 服务器对操作系统身份验证的期望。
  • 使用ImpersonateLoggedOnUser() 或相关函数完成模拟。与线程关联的用户是默认启动应用程序进程的用户,除非线程以可编程方式模拟另一个用户。

标签: oracle delphi authentication oracle11g dbexpress


【解决方案1】:

当通过在同一主机上运行的 sqlplus 连接到在我的 Windows 7 主机上运行的 Oracle XE 11g 时,预期的 Oracle 帐户是“OPS$%userdomain%\%username%”。通过 Linux VM 远程连接时,只需要“OPS$%username%”。在同一 Windows 7 主机上运行 Delphi 时,TSqlConnection 似乎就像一个远程连接,所以当我使用 Oracle "OPS$%username% 用户以 %username% 登录到 Windows 时,我能够使用操作系统身份验证。希望有道理。

【讨论】:

    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2014-12-19
    相关资源
    最近更新 更多