mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Give nicer error message when connecting to a v10 server requiring SCRAM.
This is just to give the user a hint that they need to upgrade, if they try to connect to a v10 server that uses SCRAM authentication, with an older client. Commit to all stable branches, but not master. Discussion: https://www.postgresql.org/message-id/bbf45d92-3896-eeb7-7399-2111d517261b@pivotal.io
This commit is contained in:
		@@ -172,6 +172,8 @@ extern bool Db_user_namespace;
 | 
			
		||||
#define AUTH_REQ_GSS		7	/* GSSAPI without wrap() */
 | 
			
		||||
#define AUTH_REQ_GSS_CONT	8	/* Continue GSS exchanges */
 | 
			
		||||
#define AUTH_REQ_SSPI		9	/* SSPI negotiate without wrap() */
 | 
			
		||||
#define AUTH_REQ_SASL	   10	/* SASL authentication. Not supported before
 | 
			
		||||
								 * libpq version 10. */
 | 
			
		||||
 | 
			
		||||
typedef uint32 AuthRequest;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -961,6 +961,19 @@ pg_fe_sendauth(AuthRequest areq, PGconn *conn)
 | 
			
		||||
				return STATUS_ERROR;
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
			/*
 | 
			
		||||
			 * SASL authentication was introduced in version 10. Older
 | 
			
		||||
			 * versions recognize the request only to give a nicer error
 | 
			
		||||
			 * message. We call it "SCRAM authentication" in the error, rather
 | 
			
		||||
			 * than SASL, because SCRAM is more familiar to users, and it's
 | 
			
		||||
			 * the only SASL authentication mechanism that has been
 | 
			
		||||
			 * implemented as of this writing, anyway.
 | 
			
		||||
			 */
 | 
			
		||||
		case AUTH_REQ_SASL:
 | 
			
		||||
			printfPQExpBuffer(&conn->errorMessage,
 | 
			
		||||
							  libpq_gettext("SCRAM authentication requires libpq version 10 or above\n"));
 | 
			
		||||
			return STATUS_ERROR;
 | 
			
		||||
 | 
			
		||||
		default:
 | 
			
		||||
			printfPQExpBuffer(&conn->errorMessage,
 | 
			
		||||
			libpq_gettext("authentication method %u not supported\n"), areq);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user