azure auth WIP

This commit is contained in:
Jan Prochazka
2024-08-02 14:32:28 +02:00
parent f777530b1c
commit fc448ed578
10 changed files with 91 additions and 20 deletions

View File

@@ -31,12 +31,13 @@
"plugout": "dbgate-plugout dbgate-plugin-mssql"
},
"devDependencies": {
"async-lock": "^1.2.6",
"@azure/msal-node": "^2.12.0",
"dbgate-plugin-tools": "^1.0.7",
"dbgate-query-splitter": "^4.10.1",
"webpack": "^5.91.0",
"webpack-cli": "^5.1.4",
"dbgate-tools": "^5.0.0-alpha.1",
"tedious": "^18.2.0",
"async-lock": "^1.2.6"
"webpack": "^5.91.0",
"webpack-cli": "^5.1.4"
}
}
}

View File

@@ -0,0 +1,12 @@
function getAzureAuthTypes(platformInfo) {
return null;
}
async function azureGetRedirectAuthUrl(connection) {
return null;
}
module.exports = {
getAzureAuthTypes,
azureGetRedirectAuthUrl,
};

View File

@@ -8,8 +8,11 @@ const AsyncLock = require('async-lock');
const nativeDriver = require('./nativeDriver');
const lock = new AsyncLock();
const { tediousConnect, tediousQueryCore, tediousReadQuery, tediousStream } = require('./tediousDriver');
const { getAzureAuthTypes } = require('./azureAuth');
const { nativeConnect, nativeQueryCore, nativeReadQuery, nativeStream } = nativeDriver;
let requireMsnodesqlv8;
let platformInfo;
const versionQuery = `
SELECT
@@ -52,7 +55,14 @@ const driver = {
analyserClass: MsSqlAnalyser,
getAuthTypes() {
return requireMsnodesqlv8 ? windowsAuthTypes : null;
const res = [];
if (requireMsnodesqlv8) res.push(...windowsAuthTypes);
const azureAuthTypes = getAzureAuthTypes(platformInfo);
if (azureAuthTypes) res.push(...azureAuthTypes);
if (res.length > 0) {
return _.uniqBy(res, 'name');
}
return null;
},
async connect(conn) {
@@ -115,12 +125,16 @@ const driver = {
const { rows } = await this.query(pool, 'SELECT name FROM sys.databases order by name');
return rows;
},
getRedirectAuthUrl(connection) {
return azureGetRedirectAuthUrl(connection);
}
};
driver.initialize = dbgateEnv => {
if (dbgateEnv.nativeModules && dbgateEnv.nativeModules.msnodesqlv8) {
requireMsnodesqlv8 = dbgateEnv.nativeModules.msnodesqlv8;
}
platformInfo = dbgateEnv.platformInfo;
nativeDriver.initialize(dbgateEnv);
};

View File

@@ -130,7 +130,7 @@ const driver = {
field
) ||
(field == 'trustServerCertificate' && values.authType != 'sql' && values.authType != 'sspi') ||
(field == 'windowsDomain' && values.authType != 'sql' && values.authType != 'sspi'),
(field == 'windowsDomain' && values.authType != 'sql' && values.authType != 'sspi' && values.authType != 'msentra'),
// (field == 'useDatabaseUrl' && values.authType != 'sql' && values.authType != 'sspi')
getQuerySplitterOptions: usage =>
usage == 'editor'
@@ -154,6 +154,13 @@ const driver = {
},
];
},
beforeConnectionSave: connection => {
return {
...connection,
useRedirectDbLogin: connection.authType == 'msentra' ? 1 : 0,
};
},
};
module.exports = driver;