C#Oracle托管连接上的Kerberos [英] Kerberos on C# Oracle Managed connection

查看:275
本文介绍了C#Oracle托管连接上的Kerberos的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以使用受管数据访问来设置 Kerberos 身份验证?

Is there a way to set up a Kerberos authentication using a Managed Data Access?

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

We have a C# application which connects to our Oracle database for getting/inserting some data.

我必须在每个用户与Oracle数据库的连接上实施Kerberos身份验证.

I have to implement a Kerberos authentication upon each user's connection to the Oracle database.

跟随此链接我设法在数据库上设置了一个Kerberos用户.由于在大多数用户的PC上都删除了Oracle Client,因此其余步骤已经实现.但是,有些用户的PC上没有放置Oracle Client,因此我需要找到一种方法以某种方式在app.config中设置这些设置.

Following this link I have managed to set up a Kerberos user on our DB. The rest of the steps are already implemented, as Oracle Client is Dropped on most of users' PCs. However, there are some users that don't have Oracle Client Dropped on their PCs, so I need to find a way to somehow set up those settings in the app.config.

sqlnet.ora文件:

sqlnet.ora file:

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

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文件的设置:

and the krb5.conf file's settings:

[libdefaults]
default_realm = *****
dns_lookup_realm =否 dns_lookup_kdc = true
passwd_check_s_address =否 udp_preference_limit =
kdc_timesync =
[domain_realm] ***** = ****

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

我已经看到此链接,但是我还没有' t设法设置了正确的设置.

I have seen this link but I haven't managed to set up the right settings.

我已经想象到了,就像这样:

I have imagined it, something like this:

app.config:

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();

推荐答案

oracle管理的驱动程序期望与MIT Kerberos具有依赖关系.从

The oracle managed driver expects has dependency with MIT Kerberos. section 3.3.7.2 from the Shared Link. Have you tried installing it on the client machine

这篇关于C#Oracle托管连接上的Kerberos的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆