postgresql/src/include
Heikki Linnakangas 818fd4a67d Support SCRAM-SHA-256 authentication (RFC 5802 and 7677).
This introduces a new generic SASL authentication method, similar to the
GSS and SSPI methods. The server first tells the client which SASL
authentication mechanism to use, and then the mechanism-specific SASL
messages are exchanged in AuthenticationSASLcontinue and PasswordMessage
messages. Only SCRAM-SHA-256 is supported at the moment, but this allows
adding more SASL mechanisms in the future, without changing the overall
protocol.

Support for channel binding, aka SCRAM-SHA-256-PLUS is left for later.

The SASLPrep algorithm, for pre-processing the password, is not yet
implemented. That could cause trouble, if you use a password with
non-ASCII characters, and a client library that does implement SASLprep.
That will hopefully be added later.

Authorization identities, as specified in the SCRAM-SHA-256 specification,
are ignored. SET SESSION AUTHORIZATION provides more or less the same
functionality, anyway.

If a user doesn't exist, perform a "mock" authentication, by constructing
an authentic-looking challenge on the fly. The challenge is derived from
a new system-wide random value, "mock authentication nonce", which is
created at initdb, and stored in the control file. We go through these
motions, in order to not give away the information on whether the user
exists, to unauthenticated users.

Bumps PG_CONTROL_VERSION, because of the new field in control file.

Patch by Michael Paquier and Heikki Linnakangas, reviewed at different
stages by Robert Haas, Stephen Frost, David Steele, Aleksander Alekseev,
and many others.

Discussion: https://www.postgresql.org/message-id/CAB7nPqRbR3GmFYdedCAhzukfKrgBLTLtMvENOmPrVWREsZkF8g%40mail.gmail.com
Discussion: https://www.postgresql.org/message-id/CAB7nPqSMXU35g%3DW9X74HVeQp0uvgJxvYOuA4A-A3M%2B0wfEBv-w%40mail.gmail.com
Discussion: https://www.postgresql.org/message-id/55192AFE.6080106@iki.fi
2017-03-07 14:25:40 +02:00
..
access Support SCRAM-SHA-256 authentication (RFC 5802 and 7677). 2017-03-07 14:25:40 +02:00
bootstrap Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
catalog Support SCRAM-SHA-256 authentication (RFC 5802 and 7677). 2017-03-07 14:25:40 +02:00
commands Remove objname/objargs split for referring to objects 2017-03-06 13:31:47 -05:00
common Support SCRAM-SHA-256 authentication (RFC 5802 and 7677). 2017-03-07 14:25:40 +02:00
datatype Consistently declare timestamp variables as TimestampTz. 2017-02-23 15:57:08 -05:00
executor Allow custom and foreign scans to have shutdown callbacks. 2017-02-26 13:41:12 +05:30
fe_utils Move atooid() definition to a central place 2017-03-01 11:55:28 -05:00
foreign Allow custom and foreign scans to have shutdown callbacks. 2017-02-26 13:41:12 +05:30
lib Make simplehash.h grow hashtable in additional cases. 2017-03-06 14:13:06 -08:00
libpq Support SCRAM-SHA-256 authentication (RFC 5802 and 7677). 2017-03-07 14:25:40 +02:00
mb Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
nodes Replace LookupFuncNameTypeNames() with LookupFuncWithArgs() 2017-03-06 13:31:47 -05:00
optimizer Add optimizer and executor support for parallel index scans. 2017-02-15 13:53:24 -05:00
parser Replace LookupFuncNameTypeNames() with LookupFuncWithArgs() 2017-03-06 13:31:47 -05:00
port Remove useless duplicate inclusions of system header files. 2017-02-25 16:12:55 -05:00
portability Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
postmaster Add pg_current_logfile() function. 2017-03-03 11:43:11 +05:30
regex Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
replication Use the new "Slab" context for some allocations in reorderbuffer.h. 2017-02-27 03:41:44 -08:00
rewrite Remove deprecated COMMENT ON RULE syntax 2017-02-23 08:19:52 -05:00
snowball Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
storage hash: Refactor bucket squeeze code. 2017-02-27 22:34:21 +05:30
tcop Add a new DestReceiver for printing tuples without catalog access. 2017-01-24 16:53:56 -05:00
tsearch Fix typos in comments. 2017-02-06 11:33:58 +02:00
utils Improve error reporting for tuple-routing failures. 2017-03-03 09:09:52 +05:30
.gitignore Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
Makefile Generate fmgr prototypes automatically 2017-01-17 14:06:07 -05:00
c.h De-support floating-point timestamps. 2017-02-23 11:40:20 -05:00
fmgr.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
funcapi.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
getaddrinfo.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
getopt_long.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
miscadmin.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
pg_config.h.in Remove some configure header-file checks that we weren't really using. 2017-02-25 18:10:09 -05:00
pg_config.h.win32 Remove some configure header-file checks that we weren't really using. 2017-02-25 18:10:09 -05:00
pg_config_ext.h.in Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_ext.h.win32 Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_manual.h Fix default minimum value for descending sequences 2017-01-23 14:00:58 -05:00
pg_getopt.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
pg_trace.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
pgstat.h Use asynchronous connect API in libpqwalreceiver 2017-03-03 09:13:58 -05:00
pgtar.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
pgtime.h Fix incorrect comment: pgtime's tm_mon is 1-based, not 0-based. 2017-01-24 09:36:17 -05:00
port.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
postgres.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
postgres_ext.h Move atooid() definition to a central place 2017-03-01 11:55:28 -05:00
postgres_fe.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
rusagestub.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
windowapi.h Update copyright via script for 2017 2017-01-03 13:48:53 -05:00