Calosc rozchodzi sie o uwierzytelnianie uzytkownika na roznych domenach.
Zalozmy, ze mamy serwis na domenie example.com
Na nim dokonuje sie autoryzacja uzytkownika.
Uzytkownik po kliknieciu na link, kierujacy go do innej domeny (example.pl) ma byc juz zalogowany z tymi samym loginem i uprawnieniami co na bazowej domenie.
Oczywiscie nie da sie ustawic ciasteczka sesyjnego dla kilku domen, wiec ten spsob odpada.
Serwisy nie posiadaja zcenralizowanego mechanizmu przechowywania sesji, a wiec nie mozna tez od tak przekazac ID sesji np po przez URL.
Resaumujac wyglada to tak: loguje sie na serwisie excample.com, przechodze na serwis example.pl i jestem zalogowany z tym samym loginem co na example.com.
Moim pomyslem na rozwaizanie tego problemu jest nastepujacy:
Serwis example.com, w momencie gdy uzytkownik sie zaloguje, serwuje mu strone - strona ta zawiera odwolanie do skryptu PHP generujacego przezroczysty obrazek 1x1 px.
Serwis ten przekazuje w parametrze np. <img src="http://example.pl/activate.php?sesid=123" ... /> zmienna sesid.
Okresla ona ID sesji na serwerze example.com
W momencie kiedy zostaje wywolany skrypt active.php (ktory jest tak naprawde obrazkiem) pobierana jest zmienna sesid.
Nastepnie skrypt uruchamia sesje (session_start()).
Pozniej sprawdza czy istnieje zmienna np. $_SESSION['auth'] ktora ma wartosc true - po to aby sprawdzic czy przypadkiem juz wczesniej nie zostala aktywowana sesja (czy wczesniej nie bylo wywolania tego skryptu).
Jezeli nie ma takiej zmiennej, skrypt odsyla wartosc zmiennej sesid do serwera example.com w celu zweryfikowania czy sesja jest autentyczna.
Tutaj mozna uzyc albo WebServices albo po prostu wywolac adres http://example.com/is_valid?sesid=<i tutaj wartosc zmiennej sessid przekazana do skryptu activate.php> - w odpowiedzi dostali bysmy np '1'
Jezeli jest ustawia zmienna $_SESSION['auth'] na true.
Dzieki temu sesja moze byc niejako przekazywana miedzy domenami.
Co o tym sadzicie, jakie sa Wasze pomysly?
P.S.
Jezeli cos jest neizrozumiale prosze pytac
