Oracle数据库的Windows身份验证

本文关键字:身份验证 Windows 数据库 Oracle | 更新日期: 2024-09-17 03:11:06

我正在尝试使用Windows Identity Token连接到Oracle数据库,昨天有效,但今天不行,我不知道为什么。

这是我的代码:

string ssoConnectionString;
var user = CreateSSOConnectionString(connectionStringBuilder, out ssoConnectionString);
oracleConnectionStringBuilder = new OracleConnectionStringBuilder
                                    {
                                        UserID = user.Identity.Name,
                                        ConnectionString = ssoConnectionString
                                    };
private WindowsPrincipal CreateSSOConnectionString(IConnectionStringBuilder connectionStringBuilder, out string ssoConnectionString)
{
    var user = new WindowsPrincipal(WindowsIdentity.GetCurrent());
    ssoConnectionString = ConfigurationManager.AppSettings["SSOConnectionString"];
    ssoConnectionString = string.Format(ssoConnectionString, connectionStringBuilder.Host);
    return user;
}
Connection = new Oracle.DataAccess.Client.OracleConnection();
Connection.ConnectionString = oracleConnectionString.ConnectionString;
Connection.Open(); //Fails on this line

《守则》看起来并不是这样的,但它是最基本的。

SSO ConnectionString位于app.config中,如下所示:

<add key="SSOConnectionString" value="DATA SOURCE={0};User Id=/;" />

以下是一个链接,显示Oracle自己如何解释如何做到这一点:http://docs.oracle.com/cd/E11882_01/win.112/e18754/featConnecting.htm#i1006432

这是我收到的错误消息:

ORA-1017: invalid username/password; logon denied

我检查了断点,一切看起来都很好。我也搜索了很多关于这个错误的地方,大多数人说这是因为在Oracle版本11g中,密码变得区分大小写,但我没有提供任何密码。

Oracle数据库的Windows身份验证

导致此错误的原因实际上是Oracle.DataAccess.dll版本与我机器上安装的Oracle客户端不匹配。

因此,该错误实际上根本与配置文件中的代码或连接字符串无关。

通过在命令窗口中写入"sqlplus"来检查您的Oracle客户端版本,检查Oracle.DataAccess.dll版本和目标。NET框架版本匹配。