Uwierzytelnianie w NodeJS MyTwitter

Commits on Jul 1, 2017

Tworzenie uwierzytelniania od strony NodeJS, zapraszam.

Token
W aplikacji przyszedł czas na uwierzytelnianie, co to za portal społecznościowy gdzie nie można zalogować się na swoje konto 🙂
Uwierzytelnianie użytkownika odbywa się przez wykonanie żądania do serwera. Są dwa sposoby oparte na tym mechanizmie cookies i token. W projekcie zastosowałem token. Aplikacja używa podpisanego tokenu, który klient musi wysłać wraz z każdym żądaniem. Klient pobiera token za pomocą API.

Dlaczego token? ponieważ zawszę tworzyłem aplikację oparte na cookies, pisząc ten projekt uczę się nowych rzeczy, a token jest jak najbardziej rzeczą dla mnie nową którą pomału przyswajam 🙂
Z ciekawych rzeczy które udało mi się „wygooglać” to informacje którą mówi, że wykorzystanie tokenu oznacza lepszą wydajność, ponieważ weryfikacja odbywa się za pomocą algorytmu, a nie zapytaniem do bazy danych wykonywanego w trakcie każdego żądania.

W aplikacji zainstalowałem pakiet jsw-simple który służy do tworzenia tokenu po stronie serwera. Z ważnych rzeczy warto zapamiętać, że JWT (Json Web Token) podpisuję obiekt, a nie szyfruje go.

Token składa się trzech części oddzielony kropką. Pierwsza część to nagłówek w postaci base64. Druga część to dane tokenu, zawierające zakodowany obiekt, u mnie w aplikacji drugą częścią jest username przykładowo username:Nyweorn. Część trzecie to sygnatura, sygnatura informuję serwer o poprawności danych. Jeżeli do zakodowanego tokenu dla username:Nyweoron, w części drugiej
wstawimy inną nazwę użytkownika, wtedy sygnatura nie zgadzałaby się i serwer odrzuci taki token.

BCRYP
Do generowania zakodowanych haseł w bazie danych użyłem algorytmu bcrypt który podczas generowania tworzy wartość hash. Taki algorytm jest jednokierunkowy. Tzn nie ma możliwości aby mając wartość hash, ustalić hasło, na którego podstawie wartość ta została wygenerowana. Jeżeli ktoś jest zainteresowany samym algorytmem hash i jego skutecznością to można poczytać o tęczowej tablicy – ang. rainbow table.

Pozdro 🙂
 

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*