Uwierzytelnianie i sesje - implementacja

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.