𝗝𝗪𝗧 𝗔𝘂𝘁𝗵𝗲𝗻𝘁𝗶𝗰𝗮𝘁𝗶𝗼𝗻 𝗶𝗻 𝗙𝗮𝘀𝘁𝗔𝗣𝗜
Authentication huuliza "Wewe ni nani?" Authorization huuliza "Unaweza kufanya nini?"
Ukijenga jukwaa la AI bila usalama, mtu yeyote anaweza kupata data za siri. Wanaweza kubadilisha wasifu wa watumiaji au kuona maendeleo ya mwanafunzi. Lazima ulinde rasilimali zako.
JWT (JSON Web Token) hutatua hili. Badala ya kutuma nywila (password) kwa kila ombi, mtumiaji hutuma token salama.
Mtiririko wa kazi:
- Usajili wa mtumiaji
- Fanya hashing ya nywila
- Ingia na uhakiki utambulisho
- Tengeneza token ya JWT
- Fikia njia (routes) zilizolindwa
Unapaswa kutumia zana hizi:
- passlib pamoja na bcrypt kwa ajili ya password hashing
- python-jose kwa ajili ya kutengeneza token
Usihifadhi nywila katika maandishi ya kawaida (plain text). Ikiwa mdukuzi ataiba kanzi data (database) yako, atapata kila kitu. Badala yake, hifadhi hash.
Hash hubadilisha "password123" kuwa mfululizo mrefu wa herufi za nasibu. Huwezi kurudisha hash kuwa nywila. Unahakiki tu ikiwa ingizo inalingana na hash.
Jinsi ya kuijenga:
Usajili Mtumiaji hutuma jina la mtumiaji na nywila. Unafanya hashing ya nywila na kuihifadhi kwenye kanzi data yako.
Kuingia (Login) Mtumiaji hutuma utambulisho. Unatafuta hash iliyohifadhiwa. Unatumia maktaba (library) kuhakiki nywila. Ikiwa inalingana, unatengeneza token.
Utengenezaji wa JWT Token ina data ya mtumiaji na muda wa kuisha. Unatia saini token kwa kutumia funguo ya siri (secret key). Ikiwa mtumiaji atajaribu kubadilisha data, saini itafeli.
Majibu ya kuingia (login response) yanaonekana hivi: { "access_token": "eyJhbGciOiJIUzI1Ni...", "token_type": "bearer" }
Sasa mtumiaji anashikilia funguo ya mfumo wako.
Katika sehemu inayofuata, tutajifunza jinsi ya kutumia token hizi kulinda njia (routes) maalum na kusimamia majukumu ya watumiaji.
Muhtasari wa hatua:
- Usajili wa mtumiaji
- Fanya hashing na hifadhi nywila
- Hakiki nywila wakati wa kuingia
- Tengeneza JWT iliyotiwa saini
Chanzo: https://dev.to/zeroshotanu/fastapi-for-ai-engineers-part-6-jwt-authentication-in-fastapi-5fpk
Jumuiya ya hiari ya kujifunza: https://t.me/GyaanSetuAi