FastAPIలో 𝗝𝗪𝗧 𝗔𝘂𝘁𝗵𝗲𝗻𝘁𝗶𝗰𝗮𝘁𝗶𝗼𝗻
Authentication అంటే "మీరు ఎవరు?" అని అడగడం. Authorization అంటే "మీరు ఏమి చేయగలరు?" అని అడగడం.
మీరు భద్రత లేకుండా ఒక AI ప్లాట్ఫామ్ను నిర్మిస్తే, ఎవరైనా ప్రైవేట్ డేటాను యాక్సెస్ చేయవచ్చు. వారు యూజర్ ప్రొఫైల్లను మార్చవచ్చు లేదా విద్యార్థుల పురోగతిని చూడవచ్చు. మీరు మీ వనరులను తప్పనిసరిగా రక్షించాలి.
JWT (JSON Web Token) దీనిని పరిష్కరిస్తుంది. ప్రతి రిక్వెస్ట్తో పాస్వర్డ్ను పంపే బదులు, యూజర్ ఒక సురక్షితమైన టోకెన్ను పంపుతారు.
వర్క్ఫ్లో (Workflow):
- యూజర్ను రిజిస్టర్ చేయడం
- పాస్వర్డ్ను హాష్ చేయడం
- లాగిన్ మరియు క్రెడెన్షియల్స్ను వెరిఫై చేయడం
- JWT టోకెన్ను జనరేట్ చేయడం
- ప్రొటెక్టెడ్ రూట్లను యాక్సెస్ చేయడం
మీరు ఈ సాధనాలను ఉపయోగించాలి:
- పాస్వర్డ్ హాషింగ్ కోసం bcryptతో passlib
- టోకెన్ జనరేషన్ కోసం python-jose
పాస్వర్డ్లను ఎప్పుడూ ప్లెయిన్ టెక్స్ట్గా నిల్వ చేయకండి. ఒకవేళ హ్యాకర్ మీ డేటాబేస్ను దొంగిలిస్తే, వారికి అంతా దొరికిపోతుంది. దానికి బదులుగా, ఒక హాష్ను నిల్వ చేయండి.
ఒక హాష్ "password123"ను పొడవైన రాండమ్ క్యారెక్టర్ల స్ట్రింగ్గా మారుస్తుంది. మీరు ఆ హాష్ను తిరిగి పాస్వర్డ్గా మార్చలేరు. ఇన్పుట్ హాష్తో సరిపోలుతుందో లేదో మీరు కేవలం వెరిఫై చేయగలరు.
దీనిని ఎలా నిర్మించాలి:
Registration యూజర్ ఒక యూజర్ నేమ్ మరియు పాస్వర్డ్ను పంపుతారు. మీరు పాస్వర్డ్ను హాష్ చేసి మీ డేటాబేస్లో నిల్వ చేస్తారు.
Login యూజర్ క్రెడెన్షియల్స్ను పంపుతారు. మీరు నిల్వ చేసిన హాష్ను కనుగొంటారు. పాస్వర్డ్ను వెరిఫై చేయడానికి మీరు లైబ్రరీని ఉపయోగిస్తారు. అది సరిపోలితే, మీరు ఒక టోకెన్ను సృష్టిస్తారు.
JWT Generation ఒక టోకెన్లో యూజర్ డేటా మరియు గడువు ముగిసే సమయం (expiry time) ఉంటాయి. మీరు ఒక సీక్రెట్ కీతో టోకెన్ను సైన్ చేస్తారు. ఒకవేళ యూజర్ డేటాను మార్చడానికి ప్రయత్నిస్తే, సిగ్నేచర్ ఫెయిల్ అవుతుంది.
లాగిన్ రెస్పాన్స్ ఇలా ఉంటుంది: { "access_token": "eyJhbGciOiJIUzI1Ni...", "token_type": "bearer" }
ఇప్పుడు యూజర్ మీ సిస్టమ్కు ఒక కీని కలిగి ఉన్నారు.
తదుపరి భాగంలో, నిర్దిష్ట రూట్లను రక్షించడానికి మరియు యూజర్ రోల్స్ను నిర్వహించడానికి ఈ టోకెన్లను ఎలా ఉపయోగించాలో మనం నేర్చుకుంటాము.
దశల సారాంశం:
- యూజర్ను రిజిస్టర్ చేయడం
- పాస్వర్డ్ను హాష్ చేసి నిల్వ చేయడం
- లాగిన్ సమయంలో పాస్వర్డ్ను వెరిఫై చేయడం
- సైన్ చేసిన JWTని జనరేట్ చేయడం
Source: https://dev.to/zeroshotanu/fastapi-for-ai-engineers-part-6-jwt-authentication-in-fastapi-5fpk
Optional learning community: https://t.me/GyaanSetuAi