Wpis z mikrobloga

#webdev #programowanie #csharp

Zrobiłem sobie tak dla wprawki prostą autentykację JWT tokenem na .NET Core. Założyłem przy tym, że użytkownik logując się dostarcza nazwę użytkownika i hasło, ja sobie sprawdzam po stronie backendu czy to się wszystko zgadza i jak się zgadza, to odsyłam odpowiedni token z wszelkimi przydatnymi później metadanymi użytkownika, które mam zapisane w bazie na jego temat (rola, id).

No i tutaj przychodzi pytanie. Mamy szyfrowane połączenie https, ale zastanawia mnie teraz jaka jest dobra praktyka z tymi hasłami. Teraz testowo zapytanie wygląda tak: "createToken/{userId}/{password}", ale nie jestem pewien czy aby hasło w plaintexcie powinno się znaleźć w zapytaniu w ten sposób, czy raczej powinno być chociaż schowane w body zapytania.

Po stronie bazy danych nie ma mowy o trzymaniu haseł w plaintexcie, więc albo muszą zostać natychmiastowo zahashowane po stronie backendu w kontrolerze zapytań o token i porównane ze starym hashem, albo hash musi być wygenerowany po stronie frontu i backend dostaje już gotową mielonkę, którą porównuje z własną mielonką. Jak się to robi w praktyce?
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Khaine: chyba się jeszcze nie spotkałem żeby login i hasło przesyłać w gecie. Zawsze takie dane lądują do body a https gwarantuje Ci (teoretycznie) że wszystko będzie bezpieczne. Generowanie hasha po stronie frontu nie ma sensu i może być niebezpieczne. W backendzie masz najprawdopodobniej generowanie hasha z jakąś solą więc musiałbyś tę sól ujawić frontowi i zmniejszy to bezpieczeństwo całej aplikacji.
  • Odpowiedz
@Rst00: Domyśliłem się, że do geta się tego nie rzuca xD Tak zrobiłem na szybkości, bo mi łatwiej było to z poziomu przeglądarki odpalać i sprawdzać czy działa.

Reasumując ładujemy plaintexta do body zapytania i w kontrolerze odpowiedzialnym za tokeny robimy mielonkę, porównujemy stary hash z nowym i jak się zgadza, to odsyłamy token i tyle.
  • Odpowiedz
No i tutaj przychodzi pytanie. Mamy szyfrowane połączenie https, ale zastanawia mnie teraz jaka jest dobra praktyka z tymi hasłami. Teraz testowo zapytanie wygląda tak: "createToken/{userId}/{password}", ale nie jestem pewien czy aby hasło w plaintexcie powinno się znaleźć w zapytaniu w ten sposób, czy raczej powinno być chociaż schowane w body zapytania.


@Khaine: Dorze że nie jesteś pewien, bo to nie poprawne

Reasumując ładujemy plaintexta do body zapytania i w
  • Odpowiedz
Domyśliłem się, że do geta się tego nie rzuca xD Tak zrobiłem na szybkości, bo mi łatwiej było to z poziomu przeglądarki odpalać i sprawdzać czy działa.


@Khaine: Postman twoim przyjacielem
  • Odpowiedz
@kebab-case: założyłem nazwę usera i hasło. Powinno wystarczyć. Mała szansa, że powtórzy się nazwa użytkownika ORAZ hash hasła w momencie gdy masz tak ze 30 użytkowników maksymalnie, bo to będzie mikroserwisik raczej docelowo.
  • Odpowiedz