【问题标题】:Oracle Connection String With Windows Authentication带有 Windows 身份验证的 Oracle 连接字符串
【发布时间】:2012-02-08 21:10:44
【问题描述】:

我们需要让我们的产品在 Oracle 和 SQL Server 上运行(它们最初是围绕 SQL Server 构建的)。不幸的是,我们没有任何内部 Oracle 开发经验可言,但作为一名高级开发人员,领导该项目的责任落在了我身上。到目前为止,我已经设法通过使用以下连接字符串使我们的应用程序连接到 Oracle 数据库(我使用的是 Oracle XE 11.2):

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=VS010-ORA11GR1)(PORT=1523))(CONNECT_DATA=(SERVICE_NAME=DEVORA)));User Id=dbo;Password=dbo;

我们决定使用这种类型的连接字符串的原因是因为我们不想依赖在每台客户端机器上更改 tnsnames.ora。但是,如您所见,这指定了一个 Oracle 用户和关联的密码。我们还需要提供使用等效的 SQL Server 集成安全性的能力。

根据我阅读的文献,为此我只需指定/ 作为用户ID,然后省略密码部分(因为Windows 身份验证无论如何都会忽略此部分)。我还在 Oracle 中创建了用户,确保它与 Windows 用户匹配,并使用以下 sn-ps:

CREATE USER "OPS$<DOMAIN>\<user>" IDENTIFIED EXTERNALLY;

GRANT CONNECT,RESOURCE TO "OPS$<DOMAIN>\<user>";

我还检查了托管 XE 实例和我的开发环境的本地计算机上的 sqlnet.ora 文件是否包含以下行:

SQLNET.AUTHENTICATION_SERVICES= (NTS)

我知道这将使我的应用程序能够使用 Windows 身份验证连接到 Oracle 数据库。然而,实际发生的是我收到以下 Oracle 错误消息:

ORA-01005: 给出了空密码;登录被拒绝

这没有多大意义,因为它当然是 null - 根据我读过的教程,它应该是。

应用程序针对 .Net Framework 3.5,我们使用 System.Data.OracleProvider,实际连接等由 Enterprise Library 5 处理。顺便说一下,我知道 OracleClient 组件已被弃用,但我只想在我进入更改提供程序的额外复杂性之前,这可以工作。

谁能告诉我我错过了什么?我是否选择了错误的连接字符串类型?对于任何基本错误,我深表歉意,但我一直设法避免使用 Oracle,所以我对它的了解几乎为零。

非常感谢

【问题讨论】:

    标签: oracle connection-string windows-authentication oracle-xe


    【解决方案1】:

    我有同样的问题,并在将它添加到 conn 后解决了。字符串:

    Integrated Security=yes
    

    【讨论】:

    • 真的吗?我不记得我是否尝试过这个,但当我们有时间测试它时我会试一试。我们决定至少在最初不提供集成安全性,特别是考虑到 Oracle 自己不推荐它。如果这能解决它,那我会很高兴!
    • 终于有几分钟的时间来解决这个问题,但我根本无法让它工作。在迫切需要之前,我将放弃这项研究!
    【解决方案2】:

    通过@Stikut 扩展上述答案。我用 NHibernate 3.3.3.GA 对此进行了测试,它可以工作。

    user id=/;password=;Integrated Security=yes
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      相关资源
      最近更新 更多