Z wcześniejszego wątku wiem, jak wygląda mechanizm uwierzytelniania i sesji. Teraz mam pytanie, jak to jest z implementacją? Konkretniej chodzi mi o zestaw NginX i FastCGI w C++. Muszę to implementować sam, czy są dostępne algorytmy szyfrowania lub biblioteki? Jakie dane szyfrować i jaki algorytm szyfrujący?
Serwer musisz zaimplementować (chodzi o zwracane dane do clienta), ale co do samego w sobie mechanizmu sesji to są do tego gotowe rozwiązania.
Dzięki za odpowiedź, ale problem już nie bardzo aktualny. Wymyśliłem sobie prosty i szybki system. Całość zmieściła się w mniej niż 200 linijkach. Ogólnie wygląda to tak:
-
klientowi wysyłam numer sesji, kod zabezpieczający i ID konta, na które się zalogował
-
gdy klient chce wysłać zapytanie, to musi wysłać też wszystkie ww. dane
-
po odebraniu zapytania działam da obiekcie sesji, obiekty te trzymam w zwyczajnym std::vector, a indeksem jest numer sesji
-
sprawdzam, zgodność numeru sesji, kodu zabezpieczającego, ID użytkownika, portu, IP i oczywiście, czy sesja nie wygasła
-
gdy wszytko jest ok. wykonuję zapytanie.
To wszytko ładnie opakowane w klasy. Kod zabezpieczający to coś ok. 125 znaków Base64 wygenerowanych Scryptem, którego używam także do generowania soli i hashowania. Ogólnie polecam ten algorytm i bibliotekę libscrypt. Do tych zastosowań wystarczają właściwie dwie funkcje - jedna generuje sól, hashuje i zwraca string z solą i hashem, a druga przyjmuje ów string i sprawdza, czy wszystko się zgadza.