mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Added support to connect PostgreSQL servers via Kerberos authentication. Fixes #6158
This commit is contained in:
committed by
Akshay Joshi
parent
aa9a4c30d3
commit
72f3730c34
59
web/pgadmin/authenticate/static/js/kerberos.js
Normal file
59
web/pgadmin/authenticate/static/js/kerberos.js
Normal file
@@ -0,0 +1,59 @@
|
||||
import url_for from 'sources/url_for';
|
||||
import userInfo from 'pgadmin.user_management.current_user';
|
||||
import pgConst from 'pgadmin.browser.constants';
|
||||
|
||||
function fetch_ticket() {
|
||||
// Fetch the Kerberos Updated ticket through SPNEGO
|
||||
return fetch(url_for('authenticate.kerberos_update_ticket')
|
||||
)
|
||||
.then(function(response){
|
||||
if (response.status >= 200 && response.status < 300) {
|
||||
return Promise.resolve(response);
|
||||
} else {
|
||||
return Promise.reject(new Error(response.statusText));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function fetch_ticket_lifetime () {
|
||||
// Fetch the Kerberos ticket lifetime left
|
||||
|
||||
return fetch(url_for('authenticate.kerberos_validate_ticket')
|
||||
)
|
||||
.then(
|
||||
function(response){
|
||||
if (response.status >= 200 && response.status < 300) {
|
||||
return response.json();
|
||||
} else {
|
||||
return Promise.reject(new Error(response.statusText));
|
||||
}
|
||||
}
|
||||
)
|
||||
.then(function(response){
|
||||
let ticket_lifetime = response.data.ticket_lifetime;
|
||||
if (ticket_lifetime > 0) {
|
||||
return Promise.resolve(ticket_lifetime);
|
||||
} else {
|
||||
return Promise.reject();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function validate_kerberos_ticket() {
|
||||
// Ping pgAdmin server every 10 seconds
|
||||
// to fetch the Kerberos ticket lifetime left
|
||||
if (userInfo['current_auth_source'] != pgConst['KERBEROS']) return;
|
||||
|
||||
return setInterval(function() {
|
||||
let newPromise = fetch_ticket_lifetime();
|
||||
newPromise.then(
|
||||
function() {
|
||||
return;
|
||||
},
|
||||
fetch_ticket
|
||||
);
|
||||
}, 10000);
|
||||
}
|
||||
|
||||
export {fetch_ticket, validate_kerberos_ticket, fetch_ticket_lifetime};
|
||||
Reference in New Issue
Block a user