Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dwie aplikacjie, jedna domena, SSO
aldtest
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 25.06.2022

Ostrzeżenie: (0%)
-----


Posiadam dwie aplikacje w obrębie jednej domeny. Zrobiłem SSO tak aby z poziomu jednej aplikacji możliwe było logowanie do drugiej.

W pierwszej aplikacji zrobiłem token, który zawiera również nazwę użytkownika.
  1. $token = bin2hex(random_bytes(32)).'&'.$user;
  2. file_put_contents("token.txt",$token);


W drugiej aplikacji dekoduje token i jeżeli występuje dany użytkownik i występuje plik token.txt to pomijam hasło i wpuszczam do drugiego systemu. Po wylogowaniu z jednego z systemów token jest kasowany.
  1. $token_code = preg_replace('/&.*/s','', $token);
  2. $token_user = preg_replace('/.*&/s','', $token);


Niestety zauważyłem pierwszy błąd tzn. jeżeli zaloguje się na innej przeglądarce to wtedy utworzy się token.txt więc inna osoba z innej przeglądarki może wywołać bezpośrednio drugą aplikacje i bez logowania wejdzie bo spełniło wszystkie warunki. Czy ktoś ma jakiś pomysł aby zrobić np. token unikalny, może jakiś unikalny sessions_id bądź cookies.

Trochę utknąłem i nie wiem co dalej (IMG:style_emoticons/default/facepalmxd.gif)

Chyba znalazłem rozwiązanie mojego problemu. Dołożyłem
  1. $_COOKIE['token'],
który następnie jest wysyłany za pomocą
  1. header("Set-Cookie: CookieToken=$sso_id; Domain=abc.pl; Path=/; Secure;");


Ten post edytował aldtest 27.06.2022, 20:22:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
gino
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Nie do końca tak. Każde wywołanie aplikacji podrzędnej powinno trafić do aplikacji głównej (logującej) ze swoim adresem. Dopiero aplikacja logująca decyduje co dalej, sprawdza, czy dany użytkownik jest zalogowany, czy ma prawa do aplikacji, ustala klucz (pary kluczy, token), zakodowanego user-a i odsyła to wszystko do aplikacji podrzędnej. Jakakolwiek zmiana stanu user-a w aplikacji głównej (upłynięcie czasu sesji, wylogowanie, próba Session Fixation) ma skutkować odpowiednimi działaniami w aplikacji podrzędnej. Bez żadnych cookies. Tyle w bardzo krótkiej formie.
@viking podał bezpieczne rozwiązanie.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 08:51