【问题标题】:Kerberos on C# Oracle Managed connectionC# Oracle 托管连接上的 Kerberos
【发布时间】:2017-07-14 16:55:29
【问题描述】:

有没有办法使用托管数据访问设置Kerberos身份验证?

我们有一个 C# 应用程序,它连接到我们的 Oracle 数据库以获取/插入一些数据。

我必须在每个用户连接到 Oracle 数据库时实施 Kerberos 身份验证。

this link 之后,我设法在我们的数据库上设置了一个 Kerberos 用户。其余步骤已实施,因为 Oracle 客户端已在大多数用户的 PC 上删除。但是,有些用户的 PC 上没有 Oracle Client Dropped,所以我需要想办法在 app.config 中设置这些设置。

sqlnet.ora 文件:

SQLNET.AUTHENTICATION_SERVICES=(kerberos5pre) SQLNET.KERBEROS5_CC_NAME=**** SQLNET.KERBEROS5_CONF=**** SQLNET.KERBEROS5_CONF_MIT=true SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=oracle SQLNET.FALLBACK_AUTHENTICATION=TRUE

以及 krb5.conf 文件的设置:

[libdefaults]
default_realm = *****
dns_lookup_realm = 假 dns_lookup_kdc = 真
passwd_check_s_address = false udp_preference_limit =
kdc_timesync =
[domain_realm] ***** = ****

我见过this link,但我没有设法设置正确的设置。

我想象过,是这样的:

app.config:

  <oracle.unmanageddataaccess.client>
    <version number="*">
      <settings>
        <setting name="TraceOption" value="7"/>
        <setting name="PerformanceCounters" value="0"/>
        <setting name="SQLNET.AUTHENTICATION_SERVICES" value="kerberos5pre"/>
      </settings>
      <dataSources>
        <dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) "/>
      </dataSources>
    </version>
  </oracle.unmanageddataaccess.client>

和代码:

string ProviderName = "Oracle.ManagedDataAccess.Client";

DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName);

DbDataSourceEnumerator dsenum = factory.CreateDataSourceEnumerator();
DataTable dt = dsenum.GetDataSources();
OracleConnectionStringBuilder csb = new OracleConnectionStringBuilder
{
    DataSource = (string)dt.Rows[1][1],
    Pooling = false 
};
_connectionString = csb.ToString();
_con = new OracleConnection(_connectionString);
_con.Open();

【问题讨论】:

    标签: c# oracle kerberos


    【解决方案1】:

    Oracle 托管驱动程序期望与 MIT Kerberos 有依赖关系。来自Shared Link 的第 3.3.7.2 节。你试过在客户端机器上安装它吗

    【讨论】:

      【解决方案2】:

      托管 ODP.NET 仅支持 Kerberos5,不支持任何预版本。 另外请确保它是 12.2 版本:

      SQLNET.AUTHENTICATION_SERVICES=(kerberos5)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-12
        • 2015-11-20
        • 1970-01-01
        相关资源
        最近更新 更多