是否有方法使用托管数据访问设置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)