2015-05-04 14 views
6

Pracuję na stronie typu deski rozdzielczej. Mamy stronę logowania zaimplementowaną w php, która uwierzytelnia się na serwerze LDAP. Mamy również stronę Check_MK, która ma własne okno dialogowe logowania, które uwierzytelnia się na tym samym serwerze LDAP. Chciałbym, aby użytkownik nie musiał ponownie wprowadzać swoich referencji do okna logowania Check_MK. Wolałbym, aby poświadczenia wprowadzone na naszej stronie logowania php były przekazywane do Check_MK, aby uwierzytelnianie było możliwe bez interakcji użytkownika. czy to możliwe? Jeśli tak, jak to zrobić?Jak mogę zaimplementować funkcję pojedynczego logowania w Check_MK?

Edytuj dla tych, którzy oznaczyli to jako zbyt szerokie, proszę wyjaśnić.

I był w stanie uzyskać automatyczne logowanie z check_MK przekazując nazwę użytkownika i hasło, za pomocą adresu URL, jak opisano na tej stronie: http://stichl.at/2014/04/check_mk-multisite-auto-login/
nie sądzę, że to będzie realną opcją dla mnie jednak, jak się wydaje być niezabezpieczonym, jak to jest szczegółowo opisane w tym pytaniu. Is it secure to pass login credentials as plain text in an HTTPS URL?

Mimo że jestem open source, nie jestem w stanie zmodyfikować pliku login.py checkMK ze względu na jego licencję GNU. Oprócz przekazywania poświadczeń za pośrednictwem adresu URL w postaci zwykłego tekstu, w jaki sposób mogę użyć danych logowania na mojej stronie logowania do php, aby automatycznie logować się na stronie check_MK?

Poniżej znajduje się kod php/html, w którym otwieram ekran logowania 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> 

Check_MK kod logowania można znaleźć tutaj: https://github.com/sileht/check_mk/blob/master/web/htdocs/login.py

Odpowiednia funkcja nazywa do_login i jest na linii 147.

Konkretnie, nie wiem, jak komunikować wartości moje zmienne sesji (nazwa użytkownika i hasło) do kodu login.py w bezpieczny sposób.

To jest mój pierwszy kontakt z dowolnym z tych języków i technologii. Nawet sugestie dotyczące wyszukiwanych haseł zostałyby docenione.

+0

_Co to jest LDAP? _ –

+0

To pytanie jest zbyt ogólne, ponieważ nie pokazałeś, gdzie w konkretnym kodzie utknąłeś.Stack Overflow ma na celu dostarczanie konkretnych rozwiązań konkretnych problemów, a nie pisanie całych wdrożeń. – mhlester

+1

Powinieneś być bezpieczny *, jeśli * wysyłasz POST przez HTTPS, gdy podążacie za http://stichl.at/2014/04/check_mk-multisite-auto-login/ instrukcjami. Punkt początkowy używający jquery: '$ .post (" https: // somewebhost/site/check_mk/", {" _username ":" user "," _password ":" pass "," _login ": 1}); ' –

Odpowiedz

1

Justin,

Ponieważ nie są w stanie zmodyfikować kod strony check_mk, należy zdać poświadczeń do niego. jeśli to ograniczenie nie istniało, istnieje wiele bezpiecznych sposobów robienia tego.

Teraz z tym ograniczeniem jest to opcja, z której korzystałem w przeszłości i mogłem dla ciebie pracować.

Krok 1. W swoim kodzie PHP masz dostęp do oryginalnego hasła ... (zachowaj je bezpiecznie przechowywane) Krok2. W ramach transakcji (wszystkie lub żadne, wykonaj następujące czynności) a. Ustaw hasło w ldap dla tego konkretnego użytkownika na losowe hasło, które właśnie wygenerowałeś b. Przekaż to hasło na tę stronę check_mk c. jak tylko zostanie zakończone uwierzytelnianie, na stronie PHP ustaw hasło do ldap na oryginalne.

W ten sposób nie przekażemy prawdziwego hasła i wykonamy pojedyncze logowanie między twoim php i stroną check_mk.

Jeśli możesz zmodyfikować check_mk, dałbym ci inne odpowiedzi. Daj mi znać, czy to działa.

Powiązane problemy