1

I'm experiencing an issue by using ODP.NET version 19.3 (latest Oracle Managed DataAccess available) to connect to Oracle 11g using a Secure External Password Store (SEPS), where the Oracle login credentials are stored in a client-side Oracle wallet.

If I switch to a classic login/password connection string, there are no problems with database connection and commands.

Furthermore, I report that all other .net applications that are using classic ODP 11 (un-managed DataAccess) have no problems to connect in SEPS mode; in fact, I'm building the first case of using ODP.NET 19.3 with SEPS and Oracle wallet mode.

In order I have:

  1. created a wallet (with mkstore utils) for our application and put it in a directory of server: ie

    C:\users\%APP_POOL_ID%\wallet

  2. created (for all applications) a sqlnet.ora file and put it in Oracle Home directory of server: ie

    %ORACLE_HOME%\Network\Admin

with the following content:

SQLNET.AUTHENTICATION_SERVICES=(NTS)
NAMES.DIRECTORY_PATH=(TNSNAMES,LDAP,EZCONNECT,HOSTNAME)
names.ldap_conn_timeout = 1
WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=c:\users\%APP_POOL_ID%\wallet)))
SQLNET.WALLET_OVERRIDE = TRUE
DIAG_ADR_ENABLED = off
  1. using the following ConnectionString:

    Data Source=DS_NAME_1; User ID=[USER_ID_1];Proxy User Id=[USER_ID_1];
    

Note: User ID and Proxy User Id are specified with square brackets inside connection string.

This is the exception with stack trace we obtain:

Oracle.ManagedDataAccess.Client.OracleException: 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()

and this is a portion of the trace I obtain enabling by <oracle.manageddataaccess.client> config section:

>[...]
>(PRI) (TUN) OracleTuningAgent::Unegister(): Unegistered pool Data Source=DS_NAME_1; User ID=;Proxy User Id=[USER_ID_1];
>[...]

Additionally, in another trace file, it's possible to see the WriteOAuthMessage passes BLANK password to DB:

>(PRI) (TTC) (EXT) TTCAuthenticate.ReadOSessKeyResponse()
>(PRI) (SVC) (ENT) OracleConnectionImpl.CheckForAnyErrorFromDB()
>(PRI) (SVC) (EXT) OracleConnectionImpl.CheckForAnyErrorFromDB()
>(PRI) (TTC) (ENT) TTCAuthenticate.WriteOAuthMessage()
>(PRI) (TTC) (ENT) TTCAuthenticate.WriteOAuthMessage()
>(PRI) (TTC) (ENT) TTCFunction.WriteFunctionHeader()
>(PRI) (TTC) (ENT) TTCMessage.WriteTTCCode()
>(PRI) (TTC) (EXT) TTCMessage.WriteTTCCode()
>(PRI) (TTC) (EXT) TTCFunction.WriteFunctionHeader()
>(PRI) (TTC) (EXT) TTCAuthenticate.WriteOAuthMessage()
>(PRI) (TTC) (EXT) TTCAuthenticate.WriteOAuthMessage()
>(NET) (SND) 00 00 03 80 06 00 00 00   |........|
>(NET) (SND) 00 00                     |..      |
>(NET) (SND) 03 73 00 01 01 06 02 01   |.s......|
>[..user removed..]
>(NET) (SND) 41 55 54 48 5F 50 41 53   |AUTH_PAS|
>(NET) (SND) 53 57 4F 52 44 01 40 40   |SWORD.@@|
>(NET) (SND) 00 00 00 00 00 00 00 00   |........|
>(NET) (SND) 00 00 00 00 00 00 00 00   |........|
>(NET) (SND) 00 00 00 00 00 00 00 00   |........|
>(NET) (SND) 00 00 00 00 00 00 00 00   |........|
>(NET) (SND) 00 00 00 00 00 00 00 00   |........|
>(NET) (SND) 00 00 00 00 00 00 00 00   |........|
>(NET) (SND) 00 00 00 00 00 00 00 00   |........|
>(NET) (SND) 00 00 00 00 00 00 00 00   |........|

I excluded the problem is a really wrong login/password by logging in the server machine with user credentials and test connection to the database via sqlplus command.

Can anyone help me?

Many thanks!

1

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.