使用Ldap身份验证的ODP.NET托管驱动程序

时间:2018-02-01 12:08:37

标签: c# .net oracle odp.net

我意识到这个问题可能有点模糊,但我对这个问题有点困惑。

我想使用托管ODP.NET驱动程序(NuGet版本12.2.1100)连接到oracle db 11.2.0.3.0版本 - 我正在从本机驱动程序迁移旧版应用程序。

要连接的代码很简单:

var connectionString = "Data Source=MY_TNS_ALIAS;User ID=first.last;Password=mypassword";
using (OracleConnection cn = new OracleConnection(connectionString))
{ 
    cn.Open();
}

但我收到一个例外: Oracle.ManagedDataAccess.Client.OracleException Message=ORA-01017: invalid username/password; logon denied

我添加了TNS_ADMIN环境变量,并与Procmon核对了tnsnames.orasqlnet.ora正在被阅读。

旧的本机驱动程序使用相同的代码(和不同的导入)完美地工作。另外,该代码适用于非Ldap用户(在dba_users中输入的用户)

我尝试使用OracleConnectionStringBuilder,但没有成功。

我还检查过,如果我只在NAMES.DIRECTORY_PATH中使用LDAP,则会在LDAP中查询TNS别名并读取ldap.ora - 但这不是我的目标。

我的问题

  1. 本机驱动程序是否支持LDAP身份验证?
  2. 必须考虑本机驱动程序和托管驱动程序之间是否存在任何差异?还有其他变量吗?转义用户名中的点号?
  3. 可以使用哪些附加工具进行调试(我使用TraceLevelTraceOptionTraceFileLocation
  4. 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

选中此Configuring Oracle Data Provider for .NET

  

仅支持NTS身份验证。没有RADIUS也没有Kerberos5身份验证。

因此,这取决于您使用的方法:Authentication by the Network

  
      
  • 使用SSL进行身份验证

  •   
  • 使用第三方服务进行身份验证

         
        
    • Kerberos身份验证

    •   
    • 基于PKI的身份验证

    •   
    • 使用RADIUS进行身份验证

    •   
    • 基于目录的服务

    •   
  •