Il existe plusieurs méthodes d'authentification basées sur un mot de passe. Ces méthodes opèrent de façon similaire mais diffèrent sur la façon dont les mots de passe des utilisateurs sont enregistrés sur le serveur et comment le mot de passe fourni par un client est envoyé au serveur.
scram-sha-256
      La méthode scram-sha-256 réalise une
      authentification SCRAM-SHA-256, tel qu'elle est décrite dans la RFC 7677. Il s'agit
      d'un système de question/réponse qui empêche la récupération du mot de
      passe sur des connexions non sécurisées et supporte l'enregistrement
      des mots de passe sur le serveur avec un hachage cryptographique
      normalement sécurisé.
     
C'est actuellement la méthode interne la plus sécurisée, mais elle n'est pas supportée par les anciennes bibliothèques clients.
md5
      La méthode md5 utilise un mécanisme de
      question/réponse moins sécurisé. Il empêche la récupération du mot de
      passe et évite d'enregistrer les mots de passe en clair sur le serveur,
      mais ne fournit aucune protection si l'attaquant réussit à voler le mot
      de passe haché du serveur. De plus, l'algorithme de hachage MD5 n'est
      plus considéré de nos jours comme suffisamment sécurisé avec des
      attaques déterminées.
     
      La méthode md5 ne peut pas être utilisé avec la
      fonctionnalité db_user_namespace.
     
      Pour faciliter la transition de la méthode md5 à la
      méthode SCRAM, si md5 est indiqué comme méthode
      d'authentification dans pg_hba.conf mais que le
      mot de passe de l'utilisateur sur le serveur est chiffré avec SCRAM
      (voir ci-dessous), l'authentification SCRAM est automatiquement
      utilisée à la place.
     
password
      La méthode password envoie le mot de passe en clair
      et est de ce fait vulnérable aux attaques de type
      « sniffing ». Elle doit être évitée chaque fois que
      possible. Si la connexion est protégée par le chiffrage SSL, alors
      password peut être utilisé de façon sécurisée. (Ceci
      étant dit, l'authentification par certificat SSL serait un meilleur
      choix en cas d'utilisation de SSL).
     
   Les mots de passe PostgreSQL sont distincts des
   mots de passe du système d'exploitation. Le mot de passe de chaque
   utilisateur est enregistré dans le catalogue système
   pg_authid. Ils peuvent être gérés avec les commandes
   SQL CREATE ROLE et ALTER ROLE.
   Ainsi, par exemple, CREATE ROLE foo WITH LOGIN PASSWORD
    'secret'; ou la méta-commande \password de
   psql. Si aucun mot de passe n'est enregistré
   pour un utilisateur, le mot de passe enregistré est nul et
   l'authentification par mot de passe échoue systématiquement pour cet
   utilisateur.
  
   La disponibilité des différentes méthodes d'authentification basées sur
   des mots de passe dépend de comment un mot de passe utilisateur est
   chiffré sur le serveur (ou haché pour être plus précis). Ceci est contrôlé
   par le paramètre de configuration password_encryption au moment où le mot de passe est
   configuré. Si un mot de passe est chiffré en utilisant le paramètre
   scram- sha-256, alors il peut être utilisé par les
   méthodes d'authentification scram-sha-256 et
   password (mais la transmission du mot de passe sera en
   clair dans ce dernier cas). La méthode d'authentification
   md5 sera automatiquement basculée vers la méthode
   scram-sha-256 dans ce cas, comme expliqué ci-dessus,
   donc cela fonctionnera aussi. Si un mot de passe était chiffré en
   utilisant la configuration md5, alors il peut seulement
   être utilisé pour les méthodes d'authentification md5
   et password (de nouveau, avec le mot de passe transmis
   en clair dans ce dernier cas). (Les anciennes versions de PostgreSQL
   supportaient le stockage en clair du mot de passe sur le serveur. Ceci
   n'est plus possible.) Pour vérifier les hachages de mot de passe
   actuellement enregistrés, voir le catalogue système
   pg_authid.
  
   Pour mettre à jour une installation existante de md5
   vers scram-sha-256, après s'être assuré que toutes les
   bibliothèques courantes sont suffisamment récentes pour supporter SCRAM,
   configurez password_encryption = 'scram-sha-256' dans
   postgresql.conf, demandez à chaque utilisateur de
   configurer un nouveau mot de passe, et modifiez la méthode
   d'authentification dans pg_hba.conf avec
   scram-sha-256.