Oracle.ManagedDataAccess.Core(3.21.41),具有代理用户的Oracle Wallet出现错误ORA-01017:用户名/密码无效;登录被拒绝

人气:247 发布:2022-10-16 标签: .net-core asp.net-core .net-5 odp.net-managed oracle19c

问题描述

我有.Net 5/6应用程序,由于合规性要求,我被要求与代理用户(连接字符串中没有密码)一起使用Oracle Wallet。简单地说: 新连接字符串为:Data Source=myproxy; User Id=/;

我在当前工作目录下放了以下文件,即bin/DEBUG/net5.0:

tnsnames.ora

示例文件数据:

myproxy=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhostip)(PORT=myport))(CONNECT_DATA= (SERVICE_NAME =myservname)(SERVER=DEDICATED)))
sqlnet.ora

示例文件数据

SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_VERSION = 0
WALLET_LOCATION =(SOURCE =(METHOD = FILE)(METHOD_DATA =(DIRECTORY=mydirectorieswallets)))

我有一个.Net框架应用程序,可以很好地处理上述文件和钱包。但我似乎无法让它与.Net核心应用程序一起工作。我甚至用过OracleConfiguration.OnsWalletLocation,但一点用都没有。

以下是错误示例:

Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-01017: invalid username/password; logon denied
   at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword, OracleConnection connRefForCriteria)
   at Oracle.ManagedDataAccess.Client.OracleConnection.Open()

推荐答案

我能够使用.net5应用程序运行Oracle Wallet。对我来说,除了甲骨文钱包之外,在应用程序层面没有任何问题。具有代理用户的Oracle Wallet不适用于我,但我能够使用架构用户和密码运行Oracle Wallet。

除了创建钱包外,其他一切都与上面的问题相同。 以下是创建钱包的命令,让您了解哪些有效,哪些无效。

起作用的钱包:

创建钱包

mkstore -wrl . -create

创建凭据

mkstore -wrl . -createCredential myproxy mySchemaUserName mySchemaUserPassword

无法使用的钱包:

创建钱包

mkstore -wrl . -create

创建凭据

mkstore -wrl . -createCredential myproxy myProxyUserName[mySchemaUserName] myProxyUserPassword

确保在您的解决方案中有Oracle.ManagedDataAccess.Core Nuget,在bin/DEBUG或bin/DEBUG/net5.0文件夹中有tnsnames.ora和sqlnet.ora文件。 Tnsnames.ora和sqlnet.ora文件中的数据应与上述问题相同。

498