mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Support channel binding 'tls-unique' in SCRAM
This is the basic feature set using OpenSSL to support the feature. In order to allow the frontend and the backend to fetch the sent and expected TLS Finished messages, a PG-like API is added to be able to make the interface pluggable for other SSL implementations. This commit also adds a infrastructure to facilitate the addition of future channel binding types as well as libpq parameters to control the SASL mechanism names and channel binding names. Those will be added by upcoming commits. Some tests are added to the SSL test suite to test SCRAM authentication with channel binding. Author: Michael Paquier <michael@paquier.xyz> Reviewed-by: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
This commit is contained in:
38
src/test/ssl/t/002_scram.pl
Normal file
38
src/test/ssl/t/002_scram.pl
Normal file
@ -0,0 +1,38 @@
|
||||
# Test SCRAM authentication and TLS channel binding types
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use PostgresNode;
|
||||
use TestLib;
|
||||
use Test::More tests => 1;
|
||||
use ServerSetup;
|
||||
use File::Copy;
|
||||
|
||||
# This is the hostname used to connect to the server.
|
||||
my $SERVERHOSTADDR = '127.0.0.1';
|
||||
|
||||
# Allocation of base connection string shared among multiple tests.
|
||||
my $common_connstr;
|
||||
|
||||
# Set up the server.
|
||||
|
||||
note "setting up data directory";
|
||||
my $node = get_new_node('master');
|
||||
$node->init;
|
||||
|
||||
# PGHOST is enforced here to set up the node, subsequent connections
|
||||
# will use a dedicated connection string.
|
||||
$ENV{PGHOST} = $node->host;
|
||||
$ENV{PGPORT} = $node->port;
|
||||
$node->start;
|
||||
|
||||
# Configure server for SSL connections, with password handling.
|
||||
configure_test_server_for_ssl($node, $SERVERHOSTADDR, "scram-sha-256",
|
||||
"pass", "scram-sha-256");
|
||||
switch_server_cert($node, 'server-cn-only');
|
||||
$ENV{PGPASSWORD} = "pass";
|
||||
$common_connstr =
|
||||
"user=ssltestuser dbname=trustdb sslmode=require hostaddr=$SERVERHOSTADDR";
|
||||
|
||||
test_connect_ok($common_connstr, '',
|
||||
"SCRAM authentication with default channel binding");
|
Reference in New Issue
Block a user