Rozwiązanie trzecie - wprowadzamy klucz sesji
bilet=[id użytkownika, id usługi, adres sieciowy, stempel czasowy, czas życia biletu, klucz sesji]#hasło usługi
 poświadczenie=[identyfikator użytkownika, stempel czasowy, adres sieciowy]#klucz sesji
                     
Opis rozwiązania:
- Użytkownik wysyła serwerowi uwierzytelniającemu swój identyfikator
  i nazwę serwera z którego chce skorzystać. 
 
- Serwer uwierzytelniający tworzy bilet =[identyfikator użytkownika,
 identyfikator usługi adres sieciowy, stempel czasowy, czas  życia biletu,
klucz sesji ]#hasło usługi, wraz z kluczem sesji koduje go hasłem
 użytkownika i wysyła użytkownikowi. 
 
- Użytkownik znając hasło dekoduje przesyłkę i otrzymuje bilet oraz 
 klucz sesji. 
 
- Za każdym razem kiedy użytkownik chce potwierdzić swoją autentyczość 
 przed serwerem generuje poświadczenie=[identyfikator użytkownika, stempel 
 czasowy, adres sieciowy]#klucz sesji i wysyła je wraz z biletem do serwera.
 
- Serwer znając swoje hasło dekoduje bilet, sprawdza jego poprawności 
 i z biletu wyciąga klucz sesji. Za pomocą klucza sesji dekoduje poświadczenie 
 i na tej podstawie sprawdza autentyczność użytkownika.
        
 Powyższy mechanizm łatwo można rozszerzyć tak żeby użytkownik miał możliwość
 sprawdzenia autentyczności serwera ( zabezpieczenie przed atakiem wykorzystującym
 fałszywy serwer ). Wystarczy że po wysłaniu serwerowi biletu i poświadczenia
 użytkownik zarząda żeby serwer sam wysłał mu potwierdzenie. Jeśli serwer nie będzie prawdziwym serwerem nie
 będzie potrafił wygenerować poświadczenia.
Problemy
Użytkownik chcąc otrzymać bilet i klucz sesji do różnych usług za każdym
razem musi podawać od nowa hasło. Jeśli będzie chciał skorzystać z kilku usług będzie musiał kilka razy podać hasło.  Chcielibyśmy żeby hasło
podawane było tylko  raz w trakcie sesji. Jak zrobić to nie pamiętając hasła ?