• Heikki Linnakangas's avatar
    Improve authentication error messages. · e3df8f8b
    Heikki Linnakangas authored
    Most of the improvements were in the new SCRAM code:
    
    * In SCRAM protocol violation messages, use errdetail to provide the
      details.
    
    * If pg_backend_random() fails, throw an ERROR rather than just LOG. We
      shouldn't continue authentication if we can't generate a random nonce.
    
    * Use ereport() rather than elog() for the "invalid SCRAM verifier"
      messages. They shouldn't happen, if everything works, but it's not
      inconceivable that someone would have invalid scram verifiers in
      pg_authid, e.g. if a broken client application was used to generate the
      verifier.
    
    But this change applied to old code:
    
    * Use ERROR rather than COMMERROR for protocol violation errors. There's
      no reason to not tell the client what they did wrong. The client might be
      confused already, so that it cannot read and display the error correctly,
      but let's at least try. In the "invalid password packet size" case, we
      used to actually continue with authentication anyway, but that is now a
      hard error.
    
    Patch by Michael Paquier and me. Thanks to Daniel Varrazzo for spotting
    the typo in one of the messages that spurred the discussion and these
    larger changes.
    
    Discussion: https://www.postgresql.org/message-id/CA%2Bmi_8aZYLhuyQi1Jo0hO19opNZ2OEATEOM5fKApH7P6zTOZGg%40mail.gmail.com
    e3df8f8b
auth-scram.c 33.2 KB