mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-18 00:03:05 -04:00
[bugfix][auth] Basic method uses trusted CAs when connecting to DB
Fixes #17392
This commit is contained in:
parent
9c5ace096c
commit
73fec4adc7
@ -23,6 +23,7 @@
|
||||
|
||||
#include <QNetworkProxy>
|
||||
#include <QMutexLocker>
|
||||
#include <QUuid>
|
||||
|
||||
static const QString AUTH_METHOD_KEY = QStringLiteral( "Basic" );
|
||||
static const QString AUTH_METHOD_DESCRIPTION = QStringLiteral( "Basic authentication" );
|
||||
@ -123,6 +124,28 @@ bool QgsAuthBasicMethod::updateDataSourceUriItems( QStringList &connectionItems,
|
||||
connectionItems.append( passparam );
|
||||
}
|
||||
|
||||
// add extra CAs
|
||||
QList<QSslCertificate> cas;
|
||||
cas = QgsApplication::authManager()->trustedCaCerts();
|
||||
// save CAs to temp file
|
||||
QString tempFileBase = QStringLiteral( "tmp_basic_%1.pem" );
|
||||
QString caFilePath = QgsAuthCertUtils::pemTextToTempFile(
|
||||
tempFileBase.arg( QUuid::createUuid().toString() ),
|
||||
QgsAuthCertUtils::certsToPemText( cas ) );
|
||||
if ( ! caFilePath.isEmpty() )
|
||||
{
|
||||
QString caparam = "sslrootcert='" + caFilePath + "'";
|
||||
int sslcaindx = connectionItems.indexOf( QRegExp( "^sslrootcert='.*" ) );
|
||||
if ( sslcaindx != -1 )
|
||||
{
|
||||
connectionItems.replace( sslcaindx, caparam );
|
||||
}
|
||||
else
|
||||
{
|
||||
connectionItems.append( caparam );
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user