Bonjour,
Je travail avec le langage NSDK qui fournit la commande SQL_OPEN pour se connecter à la base de donnée. Ma problématique est que l'ouverture d'une connexion avec cette commande avec un compte en étant EXPIRED(GRACE). L'ouverture de la connexion récupère le warning oracle :
Et n'ouvre pas la connexion.ORA-28002: the password will expire within n days
Or je m'attendais à avoir le même comportement qu'avec JDevelopper. A savoir, une connexion ouverte avec en code retour le warning.
L'idée étant d'avoir la possibilité d’accéder à l'application avec son compte malgré ce warning.
Par rapport à ce problème, j'ai vue pas mal de sujet (pas spécifique à NSDK) indiquant, qu'il fallait se connecté avec le compte administrateur pour changer le mot de passe du compte et/ou supprimer la politique d'expiration des mots de passe. Bien sûr, cette dernière solution n'est pas envisageable, c'est ce que je suis en train de mettre en place.
Il me reste donc la possibilité de détecté cette erreur et d'avoir un compte d'administration pour changer les mots de passe quand je détecte cette erreur au niveau de mon application. Mais, c'est inenvisageable pour de vue sécurité. (on ne force pas les utilisateurs à changer tout les mois leur mot de passe pour gérer le changement de mot de passe avec un login/pass administrateur en dur dans l'application.)
Si une personne à des information sur une éventuelle chaine de connexion qui indique un changement de mot de passe. (J'avoue que je n'y crois pas, mais on sait jamais.)
Sinon le refus de la connexion sur un EXPIRED(GRACE), c'est du fait d'Oracle, ou c'est juste le driver qui ne fait pas la différence entre un warning et une erreur ?
Cordialement,
Patrick Kolodziejczyk.
Note : Entre temps, je vais voir avec le support NSDK pour savoir ce qu'ils ont fait avec leur framework de ce côté.
Edit : Je suis allez voir le support de NSDK, c'était une erreur dans leur driver SQL. Celui-ci considérai les retour positif comme des erreurs et non comme des warning d'où la connexion non ouverte.
En standard SQL un retour positif, c'est une erreur non fatal et un retour négatif et une erreur fatal. (c'était même dans la documentation NSDK :p )
Partager