Jednoczesne logowanie do forum i strony na różnych serwera

0

Witam

Poszukuję jakichś informacji, przykładów, wskazówek, linkow itp. które mogłyby mi pomóc rozwiązac następującą sytuację:

Na pewnym serwerze jest zainstalowane forum phpbb 2.0.20 z kilkudziesięcioma zarejestrowanymi użytkownikami.
Na innym serwerze jest strona "X" i do niektórych jej dzialów wymagane jest zalogowanie się (oczywiscie po wczesniejszym zarejestrowaniu sie).
Część zarejestrowanych użytkowników forum jest takze zarejestrowanych na stronie "X" ale pod innymi loginami i haslami.

Co zrobić zeby uzytkownicy, którzy loguja sie na forum zostali automatycznie zalogowani na stronie "X" i na odwrót. (albo chociaz w jedną stronę). Co pozmieniac, w jakich plikach, co dołaczyc, z czego skorzystac? moze cURL?
Mozna równiez zalozyc ze uzytkownicy będą mieli jeden i ten sam login oraz haslo do forum i do strony "X".

Czyli za jednym logowaniem użytkownik ma byc zalogowany automatycznie do forum i do strony "X", które sa na róznych serwerach i korzystaja z róznych baz danych (w sensie ze bazy sa dwie, jedna tam gdzie strona "X" a druga tam gdzie forum)

0

Jeśli masz dostęp do bazy danych serwera z forum na serwerze ze stroną, to możesz skorzystać z informacji o zalogowaniu użytkownika na forum, ale musisz do tego trochę podrasować mechanizm logowania na forum, żeby wysyłał kopię ciastka dla domeny ze stroną.

0
Adam.Pilorz napisał(a)

żeby wysyłał kopię ciastka dla domeny ze stroną.
Czy aby na pewno mozna ustawic ciacho na inny serwer, tak zeby strona z tamtego serwera to odczytala??
Jesli to przetestowales i dziala to spoko ;)

Ja bym to rozwiazal, tak:

  • Na stronie X masz te same loginy i te same hashe hasel (wyciagniete z bazy phpbb)
  • Na stronie z phpbb umiszczasz plik "go2X.php" w ktorym masz:
    heder("Location: http://X.pl/logfrombb.php?l=".login."&p=".$pass);
  • Na serwerze z X masz "logfrombb.php" a w nim masz funkcje ktora sprawdza podany login i haslo (zmienne l i p) z tymi co masz w bazie i tez robic "reload" na strone glowna
  1. $login i $pass to zmienne z sesji forum
  2. oba pliki (go2X i logfrombb) powinny wysylac dodatkowo naglowki z nocache i natychmiastowo robic reload, po to zeby w tempie nie zostaly adresy z haslem
  3. mozna nawet skozystac z tej samej bazy (z forum), opuscisz w ten sposob "podwojne" konta
  4. jak jeszcze sie "boisz" o haslo, to walnij jakies mcript czy nawet zwykle base64 ;)

(bo chyba nie jest to tak tajna strona zeby stosowac tokeny :D )

0
pl2.php.net napisał(a)

<font color="blue">Opis</span>
int setcookie ( string nazwa [, string wartość [, int data_ważności [, string ścieżka [, string domena [, int bezpieczne]]]]] )

Więc można ustawić dla innej domeny. Nie można odczytać ciastka z innej domeny.

0
nav napisał(a)

Więc można ustawić dla innej domeny. Nie można odczytać ciastka z innej domeny.

That's it. Anyway: przeca odczytanie ciastek z innej domeny jest technicznie niewykonalne, bo ciastka są wysyłane przez przeglądarkę "z góry", więc wyciągnięcie ciastka z innej domeny wymagałoby wysyłania przez przeglądarkę wszystkich zachowanych ciastek z każdym zapytaniem do serwera - porażka by była (nie wspominając już o względach bezpieczeństwa i takich tam).

0

Jesli cos zle robie to mnie poprawcie:

$t = $_COOKIE['aaa'];
var_dump(setcookie('aaa', $t + 1, time()+60*60*3, '/', 'google.pl'));
var_dump($t);

Teraz jesli bede to mial na serwerze np. google.pl, to dziala i mi inkrementuje. Lecz jesli umieszcze to samo na np. onet.pl to setcookie zwraca true, a w $t jest zawsze NULL.
Jak znow otworze strone znajdujaca sie na google.pl to inkrementuje mi dalej (tak jakbym nic nie zmienial w cookie)

Wiec albo nie mozna zmienic ciasteczka innego serwera, albo ja gdzies robie blad ;P

0

Ale jeśli zmieniasz ciastko nie swojego serwera, to przy następnym wywołaniu skryptu nie otrzymasz jej wartości. Więc jeśli wyślesz dla domeny onet.pl, to potem w $_COOKIE['nazwa'] nie będziesz miał tego ciastka, a jak wyślesz dla twojadomena.pl, to będziesz miał.

0
Adam.Pilorz napisał(a)

Ale jeśli zmieniasz ciastko nie swojego serwera, to przy następnym wywołaniu skryptu nie otrzymasz jej wartości. Więc jeśli wyślesz dla domeny onet.pl, to potem w $_COOKIE['nazwa'] nie będziesz miał tego ciastka, a jak wyślesz dla twojadomena.pl, to będziesz miał.
Ale jesli wystawilem ciacho na onet.pl to strona z onet.pl powinna je odczytac, a tak nie jest

0

tak, ale zgodnie z tym kodem wystawiasz je jako $_COOKIE['nazwa'] + 1. Czyli wystawiasz ciacho na podstawie nie istniejącego ciacha dla Twojej domeny, więc dostajesz NULL.

0
Adam.Pilorz napisał(a)

tak, ale zgodnie z tym kodem wystawiasz je jako $_COOKIE['nazwa'] + 1. Czyli wystawiasz ciacho na podstawie nie istniejącego ciacha dla Twojej domeny, więc dostajesz NULL.

Dostaje NULL i wystawiam NULL + 1, czyli wstawiam nowe ciacho o wartosci 1 i jak wroce do mojej to po oczytaniu powinienem dostac 1, a dostaje takie wartosci jakie mialem poprzednio odswiezajac moja strone (np 42, bo 42 razy nacisnolem F5 ;) )
Czyli tak jakbym jednak nie mogl zmodyfikowac cookie innej domeny...

0

Hmm... Może w takim razie to wina przeglądarki? W niektórych da się ustawić to pewnie (w IE dla przykładu jest coś takiego jak poziomy zabezpieczeń, czy jakoś tak, może tam to jest).

0

mozna to przeciez zrobic prawie calkowicie server-side :P

po zalogowaniu na forum, serwer laczy sie z serwerem strony, ktora zapisuje sobie w bazie danych zadanie, zeby dany ip po wejsciu zostal automatycznie zalogowany. Pozostaje jeszcze kwestia sieci LAN i bezpieczenstwa, ale to juz nie moj problem :P

EDIT: Mozesz jeszcze miec na forum link do glownej z dodana zmienna - kluczem - wtedy przy powyzszym zalatwisz kwestie bezpieczenstwa

hmm... to jest mysl :D. Zrobie tak u siebie

1 użytkowników online, w tym zalogowanych: 0, gości: 1