Walidowanie konta za pomocą emaila z tokenem

0

Na pewnym serwisie zakładam nowe konto, podaję maila. Na maila dostaję link który muszę kliknąć aby konto było aktywne. Przykładowy link wygląda tak:
www.example.com/pl/pl/validate-mail-token.html?mailToken=2uxaczzq0ol0i40anlhh

Jak to wygląda po stronie example.com? Jest jakiś serwis generujący emaila który najpierw na podstawie jakiegoś algorytmu tworzy (w bazie danych?) token (tu 2uxaczzq0ol0i40anlhh), potem wysyła request do innego serwisu który rozsyła maile "wyślij mi takiego maila z tokenem".

Po kliknięciu na link w tym samym miejscu gdzie token był stworzony następuje walidacja tokena i zapisanie w bazie użytkowników że użytkownik dla którego był token 2uxaczzq0ol0i40anlhh jest już aktywny.

I na końcu gdy użytkownik jakimś frontendem (web, mobile) pobierze konto (np. zaloguje się) to po stronie serwera jest sprawdzane czy zapisanie w bazie użytkowników że użytkownik jest już aktywny.

Czy ten token to jest może jakiś hash albo JWT dla emaila? Czy robi się to jakiś inaczej?

1

Opcje jakie widzę:

  • generuję losowy token dla danego użytkownika i zapisuję go w bazie. Słabe, bo w alternatywnych podejściach nie muszę nic trzymać.
  • zawieram w JWT nazwę użytkownika. Ponieważ tylko backend zna secret to jest to bezpieczne
  • szyfruję symetrycznie nazwę użytkownika i to jest token. Analogiczne jak JWT, tylko użytkownik nie może podejrzeć co siedzi w tokenie
0

@slsy:
Podejścia z szyfrowaniem mają pewne wady:

  • Długość tokena. Przekazanie czegoś w miarę długiego (bezpiecznego) może być problemem jeżeli jest przewidywana opcja z wklepaniem tych danych ręcznie.
  • Kontrola ważności - ciężko takie raz wystawione tokeny unieważnić, w przypadku HMAC'owania problemem będzie też kontrola czasu ważności.
0

Sprawa jest banalna: user wypełnia formularz > jest tworzony token, który to jest zawierany w linku wysyłanymn do usera na podany adres.

2

Czy ten token to jest może jakiś hash albo JWT dla emaila? Czy robi się to jakiś inaczej?

Jesli by tak było, to za każdym razem byłby generowany ten sam token, więc wątpie. Pewnie jest generowany losowy token, wysyłany, a w BD jest albo cały token, albo jego hash (ja bym trzymał hash)

1 użytkowników online, w tym zalogowanych: 0, gości: 1