Oracle.ManagedDataAccess et ORA-01017: nom d'utilisateur/mot de passe invalide; connexion refusée

j'ai une situation difficile sur un de nos serveurs. J'ai une ASP.NET application MVC 3 qui doit se connecter à une base de données Oracle 12c. Il le fait en utilisant la chaîne de connexion suivante:

User ID=myuserid;Password=mypass;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<IP ADDRESS>)(PORT = 1521)))(CONNECT_DATA=(SERVICE_NAME=PDB1)));

j'utilise aussi L'Oracle D'Oracle.ManagedDataAccess, version 4.121.1.0. Chaque tentative de connexion entraîne l'erreur suivante:

ORA-01017: invalid username/password; logon denied

je peux me connecter avec succès sur mon bureau avec les justificatifs d'identité ci-dessus. J'ai l' même code sur un autre serveur, mais en utilisant une ancienne version non gérée de la bibliothèque, et il peut se connecter avec succès avec les identifiants susmentionnés. Cependant, le serveur sur lequel je voudrais que mon code s'exécute échoue à chaque fois en utilisant les mêmes informations d'authentification qui permettent des connexions réussies sur différents serveurs.

sur le serveur qui échoue, je peux:

  • connect via SQLPLUS
  • hit La base de données avec TNSPING
  • créer un DSN système pour établir une connexion ODBC

j'ai vérifié les noms.ORA dans tous les endroits et ils semblent être corrects.

après avoir consulté la base de données trop souvent, le compte s'est en fait verrouillé, indiquant que j'étais, en effet, entré dans la base de données et que la base de données n'aimait pas les justificatifs d'identité présentés. J'ai vérifié les applications qui se connectaient auparavant avec succès et ils ont également a échoué avec une erreur indiquant que le compte était verrouillé. Le déverrouillage du compte a permis à ces applications de se connecter avec succès à l'exception du serveur avec lequel j'ai des problèmes.

je suis à bout de nerfs.

quelqu'un a d'autres suggestions quant à ce qui pourrait causer ce problème?

MODIFIER :

J'ai installé WireShark sur mon ordinateur local et sur le la délinquance serveur. J'ai capturé la communication entre mon bureau et la base de données ainsi que le serveur incriminé et la base de données. J'ai trouvé que mon bureau communiquait le mot de passe:

0080  35 42 31 41 43 34 30 00 01 01 01 0d 0d 41 55 54   5B1AC40......AUT
0090  48 5f 50 41 53 53 57 4f 52 44 01 40 40 43 30 36   H_PASSWORD.@@C06
00a0  37 39 42 31 31 42 46 36 42 41 43 44 39 30 38 44   79B11BF6BACD908D
00b0  37 39 34 34 31 31 46 34 32 33 30 42 34 36 44 36   794411F4230B46D6
00c0  35 36 36 33 31 42 45 39 39 41 36 43 36 37 42 44   56631BE99A6C67BD
00d0  43 33 35 42 42 44 36 44 42 45 37 34 36 00 01 0d   C35BBD6DBE746...

alors que le serveur avec lequel j'ai des problèmes, n'a pas (ou du moins c'est l'hypothèse):

0080  39 33 39 37 32 33 46 00 01 01 01 0d 0d 41 55 54   939723F......AUT
0090  48 5f 50 41 53 53 57 4f 52 44 01 40 40 00 00 00   H_PASSWORD.@@...
00a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
00b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
00c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
00d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 0d   ................

est-ce que quelqu'un connaît un paramètre de sécurité / configuration qui empêcherait les mots de passe d'être transmis même s'ils sont présents dans la chaîne de connexion?

Modifier (20180713):

dans mon cas particulier, il s'agissait du réglage FIPS.

pour ceux qui font de la recherche, il y a plusieurs façons de contourner cela.

  1. vous pouvez modifier le paramètre du registre situé à HKLMSystemCurrentControlSetControlLsaFIPSAlgorithmPolicyEnabled. Si FIPS est activé, la valeur est 1. Si désactivé, l' la valeur est de 0. Vous n'avez pas besoin de redémarrer.

  2. très probablement, la raison pour laquelle vous vous trouvez dans ce problème est que FIPS est activé et que vous utilisez la bibliothèque d'accès aux données gérées par Oracle. Une solution efficace consiste à utiliser la bibliothèque non gérée. Toutefois, pour utiliser cette bibliothèque, vous devez installer le Client Oracle Instant. Le client est disponible en téléchargement dans le Oracle Data Access Components .

  3. mettez votre serveur à niveau vers Oracle 12.2 C. Les versions Oracle 12c avant 12.2 c ont encore ce problème.

si vous n'avez pas activé FIPS, il est fort probable que vous devrez vérifier si votre base de données a le paramètre SEC_CASE_SENSITIVE_LOGON défini à true. Vous devrez exécuter ALTER system SET SEC_CASE_SENSITIVE_LOGON = FALSE, puis réinitialiser tous vos mots de passe.

9
demandé sur DerHaifisch 2014-10-16 22:00:39

6 réponses

je lutte avec ce même problème depuis quelques semaines et j'ai finalement une résolution. J'ai dû désactiver la Politique de sécurité FIPS, essayer de définir cette clé:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy] "Enabled" = dword: 00000000

à zéro, il a fonctionné parfaitement pour moi

j'ai suivi votre fil votre problème de mot de passe blanc m'a finalement pointé ici:

https://community.oracle.com/thread/2557592?start=30&tstart=0

11
répondu Jeff McConnell 2014-10-31 19:34:10

Basé sur la réponse de Jeff (10/31/2014)...

le paramètre de Registre peut être défini par GPO pour n'autoriser que les algorithmes conformes à la norme FIPS. Le réglage à 0 comme indiqué peut être une violation de certaines politiques de sécurité et être écrasé par le GPO. Ce paramètre de Registre contrôle plus que juste IIS ou ASP.NET.

il y a une autre façon qui est propre à .NET et qui peut fonctionner au niveau de l'application. C'est beaucoup plus facile de justifier par rapport à modifier les paramètres du serveur entier.

méthode propre à l'Application:

dans votre Web.config ou App.fichier de configuration, ajouter le paramètre suivant:

<configuration> <!-- Will already be there -->
  <runtime>
    <enforceFIPSPolicy enabled="false"/>
  </runtime>
...  the rest of your .config

Si je me souviens bien, ce doit être au début de votre fichier de configuration.

Tous les .NET application de la méthode:

placer le réglage ci-dessus dans la machine.fichier de configuration. Il y en aura un pour chaque version. net et architecture 64 bits/32 bits). Il y aura déjà un élément, donc mettez l'élément à l'intérieur.

9
répondu John O'Reilly 2014-11-06 21:59:01

essayez d'utiliser l'une des chaînes de connexion suivantes:

  1. Data Source=username/password@//myserver:1521/my.service.com;

  2. Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID))); User Id=myUsername;Password=myPassword;

vous pouvez obtenir plus d'information ici .

0
répondu Rex 2014-10-27 18:54:30

Je n'ai pas tout à fait eu le même scénario que ce cas, mais j'ai eu des résultats très similaires. Ce que j'ai fait pour régler le problème était, j'ai inclus le mot de passe dans des guillemets comme le suivant (VB.NET):

cnx.ConnectionString = "User ID=MYID;Password=""MyPass"" ;Data Source=MyTEST"

ou utiliser chr (34) comme suit

cnx.ConnectionString = "User ID=MYID;Password="+chr(34)+"MyPass"+chr(34)+" ;Data Source=MyTEST"
0
répondu gouderadrian 2016-01-07 11:19:47

j'ai eu exactement le même problème. Quand je me connectais à la base de données directement à partir de SqlDeveloper, ça marchait très bien. Mais mon application (construite sur VB6) n'a pas réussi à se connecter à Oracle et donner erreur "ORA-01017 ID/password invalide.

Après avoir désactivé, connexion sensible à la casse pour mon ID de base de données, il a résolu le problème.

0
répondu rima ganguly 2018-01-04 19:39:18

j'ai eu le même problème! Je n'ai pas essayé de changer le RegKey mais j'ai essayé de changer la configuration Web et machine. Cela n'a pas fonctionné.

ce qui a résolu le problème a été de changer le bassin d'applications que je courais!

le Pool D'applications fonctionnait sous un compte de service et une fois que je l'ai transféré dans un nouveau Pool D'applications avec juste le compte système par défaut, il a commencé à récupérer le code D'Utilisateur et le mot de passe de la configuration.

0
répondu Robert Stokes 2018-07-13 01:24:58