background success stories

ORA-28040: No matching authentication protocol

Cet article explique l’erreur « ORA-28040: No matching authentication protocol » obtenue lors d’une connexion à une base Oracle 12.2.

  • Ce problème a été rencontré sur des bases en 12.2, avec des clients en 11.2.0.1.
  • Cette erreur traduit un problème de compatibilité entre le protocole d’authentification utilisé côté client et côté serveur.
  • Le protocole d’authentification utilisé côté serveur dépend du paramètre SQLNET.ALLOWED_LOGON_VERSION_SERVER du fichier sqlnet.ora.
  • Attention, il s’agit du fichier sqlnet.ora du RDBMS HOME, pas du GRID HOME, même si le listener est démarré à partir du GRID HOME.
  • Le numéro de version spécifié par ce paramètre n’est pas celui du client ou du moteur Oracle, mais la version du protocole d’authentification.
  • Si ce paramètre vaut 12a, il faut que le client soit minimum en 12.1.
  • Si ce paramètre vaut 12 (défaut), il faut que le client soit minimum en 11.2.0.3 ; pour les clients plus anciens, il faut que le CPUOct2012 (ou plus récent) ait été appliqué côté client.
  • Si ce paramètre vaut 11, et que le client est inférieur à 11.2.0.3 et sans le CPUOct 2012, il faut utiliser la version 10G des mots de passe.

 

 

Ci-dessous deux solutions possibles pour contourner l’erreur ORA-28040.

  • Option 1 : passer sur une version du client Oracle compatible avec la valeur par défaut du paramètre SQLNET.ALLOWED_LOGON_VERSION_SERVER.

 

  • Option 2 : rester dans la version courante du client ; dans ce cas, il faut :
    • Positionner SQLNET.ALLOWED_LOGON_VERSION_SERVER=11 dans le fichier sqlnet.ora côté serveur, dans le RDBMS HOME.
    • Redémarrer l’instance ; à partir de ce moment, la base n’exclue plus l’utilisation de mot de passe 10G.
    • Faire un reset du mot de passe des comptes pour lesquels on essaie de se connecter à partir du client 11.2.0.1, en réutilisant le même mot de passe.
      alter user identified by password;
    • Valider que la valeur du champ PASSWORD_VERSIONS a bien été modifiée pour les comptes en question (passage de « 11G 12C » à « 10G 11G 12C »).
      SQL> select username,password_versions from dba_users;
    • Valider la connexion à partir du client 11.2.0.1.