C#Oracle托管连接上的Kerberos



是否有方法使用托管数据访问设置Kerberos身份验证?

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

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

按照这个链接,我已经设法在我们的数据库上设置了一个Kerberos用户。剩下的步骤已经实现了,因为Oracle客户端在大多数用户的电脑上都被丢弃了。然而,有些用户的电脑中没有Oracle客户端被丢弃,所以我需要找到一种方法在app.config中设置这些设置。

sqlnet.ora文件:

SQLNET.AUTHENTICATION_SERVICES=(kerberos5pre)SQLNET.KERBEROS5_c_NAME=***SQLNET.kerkeros5.CONF=****SQLNET.KERBEROS5_CONF_MIT=真SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=oracleSQLNET.FALLBACK_AUTHENTICATION=真

和krb5.conf文件的设置:

[libdefaults]
default_realm=*****
dns_lookup_realm=falsedns_lookup_kdc=true
passwd_check_s_address=falseudp_preference_limit=
kdc_timesync=
[domain_realm]*****=***

我看到了这个链接,但我还没有设置正确的设置。

我想象过,大概是这样的:

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有依赖关系。第3.3.7.2节。你试过在客户端机器上安装它吗

Managed ODP.NET仅支持Kerberos5,不支持预版本。此外,请确保它是12.2版本:

SQLNET.AUTHENTICATION_SERVICES=(kerberos5)

相关内容

  • 没有找到相关文章

最新更新