2015-05-04 13 views
6

Sto lavorando su un sito Web di tipo dashboard. Abbiamo una pagina di accesso implementata in PHP che autentica contro un server LDAP. Abbiamo anche una pagina Check_MK con una propria finestra di accesso che si autentica sullo stesso server LDAP. Vorrei che l'utente non dovesse reinserire le proprie credenziali nella finestra di dialogo di accesso Check_MK. Preferirei che le credenziali inserite nella nostra pagina di accesso php passassero a Check_MK in modo che l'autenticazione possa essere eseguita senza l'interazione dell'utente. È possibile? Se sì, come lo faccio?Come posso implementare funzionalità di Single Sign-On con Check_MK?

Modificare per coloro che hanno contrassegnato questo come troppo ampio, si prega di spiegare.

sono stato in grado di ottenere l'accesso automatico con check_MK passando il nome utente e la password in via l'url come descritto su questo sito: http://stichl.at/2014/04/check_mk-multisite-auto-login/
Non credo che questa sarà una valida opzione per me però come sembra essere insicuro come è dettagliato in questa domanda Is it secure to pass login credentials as plain text in an HTTPS URL?

Sebbene open source, non sono in grado di modificare il file login.py checkMK a causa della sua licenza GNU. Oltre a trasmettere le credenziali tramite l'URL in testo normale, come posso utilizzare le credenziali fornite alla mia pagina di accesso php per accedere automaticamente alla pagina check_MK?

Di seguito è riportato il codice php/html in cui apro la schermata di accesso Check_MK.

<script type="text/javascript"> 
    var version = global.dashboard_version; 
    console.log("version = " + version); 
    var url = global.ips[version+"_nagios_iframe"]; 
    var suffix = <?php echo "'". 
     '&_username='. 
     $_SESSION['username']. 
     '&_password='. 
     $_SESSION['password']. 
     "&_login=1'";?>;   
    console.log("suffix = "+suffix); 
url = url + suffix; 
console.log("url = "+url); 
document.getElementById("nagiosiframe").src = url; 
</script> 

Il codice di accesso Check_MK può essere trovato qui: https://github.com/sileht/check_mk/blob/master/web/htdocs/login.py

La relativa funzione è chiamata do_login e si trova sulla linea 147.

In particolare, non so come comunicare i valori di le variabili di sessione (nome utente e password) per il codice login.py in modo sicuro.

Questa è la mia prima esposizione a uno di questi linguaggi e tecnologie. Anche i suggerimenti sui termini di ricerca sarebbero apprezzati.

+0

_Che cos'è LDAP? _ –

+0

Questa domanda è troppo ampia perché non hai indicato dove sei bloccato nel tuo codice specifico.Stack Overflow è progettato per fornire soluzioni concrete a problemi specifici, non per scrivere intere implementazioni. – mhlester

+1

Devi essere sicuro * se * si invia un POST su https quando si seguono le http://stichl.at/2014/04/check_mk-multisite-auto-login/ istruzioni. Un punto di partenza con jquery: '$ .post (" https: // somewebhost/site/check_mk/", {" _username ":" utente "," _password ":" pass "," _login ": 1}); ' –

risposta

1

Justin,

Dal momento che non si è in grado di modificare il codice per la pagina di check_mk, si deve passare le credenziali ad esso. se questa restrizione non fosse presente, ci sono molti modi sicuri per farlo.

Ora con questa restrizione, questa è un'opzione che ho usato in passato e potrebbe funzionare per voi.

Step1. Nel tuo codice PHP, hai accesso alla password originale ... (conservala in modo sicuro) Step2. All'interno di una transazione (tutto o nessuno, eseguire quanto segue) a. Imposta la password nel ldap per quell'utente particolare a una password casuale che hai appena generato b. Passa quella password nella pagina check_mk c. non appena l'autenticazione è completa, dalla tua pagina PHP, imposta la password ldap su quella originale.

In questo modo non passerai la vera password e avvierai il single sign-on tra la tua pagina php e check_mk.

Se è possibile modificare il check_mk, avrei dato altre risposte. Fammi sapere se funziona.

Problemi correlati