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.DataAccess.dll
版本与我机器上安装的Oracle客户端不匹配。
因此,该错误实际上根本与配置文件中的代码或连接字符串无关。
通过在命令窗口中写入"sqlplus"来检查您的Oracle客户端版本,检查Oracle.DataAccess.dll
版本和目标。NET框架版本匹配。