JWT NB! Ootan, et kõik püüaks 4. sprindis JWT-d enda projektis kasutusele võtta. Mille poolest erineb JWT tavalisest token-st/sessionID-st? Tokenite tüübid -viide (sessionId, pangakaart) -väärtus(JWT, sularaha) Authorization vs Authentication Autoriseerimine vs autentimine Kasutamise õiguse kontrollimine vs Isikusamasuse kontrollimine JWT kompoendid (encoded)Header { "alg":"" , "typ":"JWT" } (encoded)Payload { "iss": , "exp": , "suvaline":"Tarvo" } Signature krüpto(H + . + P, pikkVõti) -------------------------------- STATELESS teenus me ei pea teadma eelmiseid samme. kõik saame sisendina kaasa. Miks me tahame olekuvaba teenust? Mikroteenused miks GUI ei peaks kasutama JWT-d? Blacklist Kuidas toimub JWT blokeerimine? tühistada kõik tokenid Aga miks seda ikka kasutatakse? Tahame kasutada load balance-ri Meil võib olla mitu rakendust, mille vahel sooviks kasutajat suunata ilma täiendava sisselogimiseta. Lihtsalt meeldib, et kohe token-s on näha, mis mis rollid ja õigused kasutajal on, ilma neid eraldi küsimata. Docker-compose Teeme kõik mikroteenused omavahel lokaalses võrgus olevate konteineritena ja jätame ainult gateway välismaailmaga suhtlema. kas sellisel juhul on meil JWT-st kasu? Eelised: + pole ühist baasi vaja + saab mitme teenuse korral kasutada sama tokenit - JWT Puudused: - kui võti kaob, siis on kõik tokenid vaja tühistada - palju suurem, kui session id - Krüpto algoritm võib aeguda === Probleem me ei taha võtit teistega jagada kui võti on lühike, siis võib hakata seda ära arvama. Lahendus Asümmeetriline võti (allkirjastame privaatse võtmega, aga kontrolliks jagame avalikku võtit) Demo ---------------------------------- http://jwtbuilder.jamiekurtz.com/ https://jwt.io/ https://www.base64encode.org/ Harjutustunni jaoks ------------------------------------ https://www.c-sharpcorner.com/article/jwt-authentication-and-authorization-in-net-6-0-with-identity-framework/ Demo3 näidisprojektiga ---------------------- https://gitlab.cs.ttu.ee/tarvo.treier/itb2203-2023-workout-app