ఆథెంటికేషన్ అంటే ఏమిటి? లాగిన్లు, సెషన్లు మరియు OAuth సులభంగా వివరణ
ఆథెంటికేషన్ అంటే యాప్ ఒక యూజర్ ఎవరో ఎలా నిర్ధారిస్తుంది — సాధారణంగా వారికి తెలిసిన దాన్ని (పాస్వర్డ్) తనిఖీ చేయడం ద్వారా, వారి దగ్గర ఉన్నదాన్ని (ఫోన్ లేదా ఇమెయిల్కు పంపిన కోడ్) తనిఖీ చేయడం ద్వారా, లేదా మరో నమ్మకమైన సర్వీస్ నుండి ఐడెంటిటీని (“Google తో సైన్ ఇన్” వంటిది) తీసుకోవడం ద్వారా. ఒక యూజర్ ఆథెంటికేట్ అయిన తర్వాత, ప్రతి పేజీలో మళ్లీ లాగిన్ కాకుండా ఉండేలా యాప్ వారిని సెషన్ లేదా టోకెన్తో గుర్తుంచుకుంటుంది. ఆ తెలిసిన యూజర్ ఏమి చేయడానికి అనుమతి ఉందో నిర్ణయించడం వేరే దశ, దీన్ని ఆథరైజేషన్ అంటారు.
AI తో నిర్మించేటప్పుడు ఇది ఎందుకు ముఖ్యం
లాగిన్ జోడించమని అడగడం AI బిల్డర్కు చేసే అత్యంత సాధారణ అభ్యర్థనల్లో ఒకటి, మరియు సూక్ష్మంగా తప్పుగా చేయడం కూడా సులభం. లాగిన్ పేజీ రూపొందించడం సరళం. కష్టమైన భాగం దాని చుట్టూ ఉన్న ప్రతిదీ:
- పాస్వర్డ్లు సురక్షితంగా నిల్వ అవుతున్నాయా?
- ప్రతి ప్రైవేట్ పేజీ మరియు ప్రతి API ఎండ్పాయింట్ నిజంగా అడుగుతున్నది ఎవరో తనిఖీ చేస్తుందా?
- URL లోని ఒక సంఖ్యను మార్చడం ద్వారా లాగిన్ అయిన కస్టమర్ మరొక కస్టమర్ డేటాను చూడగలరా?
- ఎవరైనా పాస్వర్డ్ మర్చిపోతే ఏమి జరుగుతుంది?
ఏ యాప్ అయినా ఈ అన్నింటిలో విఫలమవుతూ కూడా పూర్తిగా సురక్షితంగా కనిపించవచ్చు. కదిలే భాగాలను అర్థం చేసుకుంటే సరైన ప్రశ్నలు అడగడానికి మరియు సరైన విషయాలు పరీక్షించడానికి సహాయపడుతుంది.
ఒక రోజువారీ పోలిక
హోటల్లో చెక్-ఇన్ అయ్యే దృశ్యాన్ని ఆలోచించండి.
ఫ్రంట్ డెస్క్ వద్ద మీరు ID చూపిస్తారు. అది ఆథెంటికేషన్: మీరు ఎవరో నిరూపించడం. రిసెప్షనిస్ట్ మీకు కీ కార్డ్ ఇస్తారు. ఆ కార్డ్ మీ సెషన్: మీ బస మొత్తంలో మళ్లీ ID చూపించాల్సిన అవసరం లేదు; కార్డ్ ట్యాప్ చేస్తారు.
ఆ కార్డ్ మీ గదిని, జిమ్ను, మీ ఫ్లోర్కు లిఫ్ట్ను తెరుస్తుంది — కానీ ఇతర అతిథుల గదులను లేదా స్టాఫ్ ఆఫీస్ను కాదు. అది ఆథరైజేషన్: మీ ఐడెంటిటీకి ఏ యాక్సెస్ అనుమతి ఉంది. కార్డ్ పోతే, హోటల్ డెస్క్ వద్ద దాన్ని డీయాక్టివేట్ చేయవచ్చు (సెషన్ రద్దు). చెక్-అవుట్ అయినప్పుడు అది పనిచేయడం ఆగిపోతుంది (లాగ్ అవుట్ లేదా గడువు ముగియడం).
“Google తో సైన్ ఇన్” అనేది హోటల్ మిమ్మల్ని స్వయంగా ఐడీ తనిఖీ చేయకుండా, “ఇతను/ఈమె ఎవరో ఇదిగో” అని చెప్పే ఒక నమ్మకమైన భాగస్వామి లేఖను అంగీకరించడం లాంటిది.
ప్రధాన లాగిన్ పద్ధతులు
| పద్ధతి | ఇది ఎలా పనిచేస్తుంది | లాభాలు | నష్టాలు |
|---|---|---|---|
| ఇమెయిల్ + పాస్వర్డ్ | యూజర్ పాస్వర్డ్ ఎంచుకుంటారు; యాప్ దాని హ్యాష్ను నిల్వ చేస్తుంది | పరిచయమైనది, బయటి ఆధారపడటం లేదు | హ్యాష్లను సురక్షితంగా నిల్వ చేయాలి మరియు రీసెట్లను నిర్వహించాలి |
| మ్యాజిక్ లింక్ / ఒకసారి వాడే కోడ్ | యాప్ లాగిన్ చేసే లింక్ లేదా కోడ్ను ఇమెయిల్ చేస్తుంది | లీక్ లేదా మర్చిపోవడానికి పాస్వర్డ్లు లేవు | ఇమెయిల్ డెలివరీపై ఆధారపడుతుంది; లాగిన్ నెమ్మది |
| సోషల్ లాగిన్ (OAuth / OpenID Connect) | యూజర్ Google, Apple, GitHub మొదలైన వాటితో సైన్ ఇన్ చేస్తారు | యూజర్లకు వేగంగా; మీరు పాస్వర్డ్ నిల్వ చేయరు | ప్రతి ప్రొవైడర్తో సెటప్; ఆ ఖాతాలు లేని యూజర్లు |
| హోస్ట్ చేసిన ఆథ్ ప్రొవైడర్ | Clerk, Auth0 లేదా Supabase Auth వంటి సర్వీస్ సైన్-అప్, లాగిన్ మరియు రీసెట్లను నిర్వహిస్తుంది | మీకు తక్కువ సెక్యూరిటీ పని | స్కేల్లో నెలవారీ ఖర్చు; మరో డిపెండెన్సీ |
| మల్టీ-ఫ్యాక్టర్ (MFA / 2FA) | మొదటి తనిఖీ తర్వాత రెండో తనిఖీ, ఉదాహరణకు ఆథెంటికేటర్ యాప్ కోడ్ | చొరబడటం చాలా కష్టం | కొంచెం ఎక్కువ ఇబ్బంది |
పాస్వర్డ్లను ఎలా నిల్వ చేయాలి
సురక్షిత యాప్ మీ అసలు పాస్వర్డ్ను ఎప్పుడూ నిల్వ చేయదు. బదులుగా ఇది హ్యాష్ను నిల్వ చేస్తుంది: పాస్వర్డ్ను స్థిర స్ట్రింగ్గా మార్చే ఒక వన్-వే ఫంక్షన్ యొక్క ఫలితం. మీరు లాగిన్ అయినప్పుడు, యాప్ మీరు టైప్ చేసినదాన్ని హ్యాష్ చేసి, ఫలితాన్ని నిల్వ ఉన్న హ్యాష్తో పోల్చుతుంది.
దీన్ని సురక్షితం చేసే రెండు వివరాలు:
- సాల్ట్ — హ్యాష్ చేయడానికి ముందు ప్రతి పాస్వర్డ్కు జోడించే యాదృచ్ఛిక విలువ, తద్వారా ఒకే పాస్వర్డ్ ఉన్న ఇద్దరికి వేర్వేరు హ్యాష్లు వస్తాయి, మరియు ముందే లెక్కించిన లుకప్ టేబుల్స్ పనికిరావు.
- పాస్వర్డ్ల కోసం రూపొందించిన నెమ్మది అల్గారిథమ్ — Argon2, bcrypt లేదా scrypt వంటివి. MD5 లేదా SHA-256 వంటి సాధారణ హ్యాష్లు తమంతట తాము చాలా వేగంగా ఉంటాయి; దాడి చేసేవారు బిలియన్ల అంచనాలు వేయగలరు.
హ్యాషింగ్ అంటే ఎన్క్రిప్షన్ కాదు. ఎన్క్రిప్ట్ చేసిన డేటాను కీతో డీక్రిప్ట్ చేయవచ్చు; పాస్వర్డ్ హ్యాష్ అసలు రివర్స్ చేయకుండా రూపొందించబడుతుంది.
సెషన్లు vs టోకెన్లు
లాగిన్ తర్వాత, ప్రతి రిక్వెస్ట్లో మిమ్మల్ని గుర్తించడానికి యాప్కు మార్గం కావాలి. రెండు సాధారణ విధానాలు ఉన్నాయి.
| సెషన్ (కుకీ) | టోకెన్ (ఉదా. JWT) | |
|---|---|---|
| బ్రౌజర్ దగ్గర ఏముంటుంది | కుకీలో ఒక యాదృచ్ఛిక సెషన్ ID | యూజర్ సమాచారం మరియు గడువు కలిగిన సంతకం చేసిన టోకెన్ |
| లాగిన్ స్థితి ఎక్కడ ఉంటుంది | సర్వర్లో, డేటాబేస్ లేదా స్టోర్లో | టోకెన్ లోనే |
| అందరి నుండి లాగ్ అవుట్ చేయడం | సులభం: సర్వర్లో సెషన్ తొలగించండి | కష్టం: గడువు ముగిసే వరకు టోకెన్ చెల్లుతుంది, బ్లాక్-లిస్ట్ ఉంచితే తప్ప |
| సాధారణ ఉపయోగం | సాంప్రదాయ వెబ్ యాప్లు | APIలు, మొబైల్ యాప్లు, ఒకదానితో ఒకటి మాట్లాడే సర్వీసులు |
కుకీల కోసం మూడు సెట్టింగ్లు ముఖ్యం: HttpOnly (పేజీలోని JavaScript కుకీని చదవలేదు), Secure (HTTPS ద్వారా మాత్రమే పంపబడుతుంది) మరియు SameSite (ఇతర సైట్ల నుండి రిక్వెస్ట్లపై పంపడాన్ని పరిమితం చేస్తుంది). బ్రౌజర్ localStorage లో టోకెన్లను నిల్వ చేయడం సాధారణం, కానీ అది పేజీలో నడిచే ఏ స్క్రిప్ట్కైనా వాటిని బహిర్గతం చేస్తుంది.
OAuth మరియు “Google తో సైన్ ఇన్”
OAuth 2.0 అనేది డెలిగేటెడ్ ఆథరైజేషన్ కోసం ఒక ప్రామాణికం: ఇది ఒక యాప్కు మరో సర్వీస్లోని మీ ఖాతాకు పరిమిత యాక్సెస్ ఇస్తుంది — ఉదాహరణకు మీ Google Calendar చదవడానికి — మీ Google పాస్వర్డ్ను ఎప్పుడూ చూడకుండా. మీరు Googleకు పంపబడతారు, నిర్దిష్ట అనుమతులను (వాటిని scopes అంటారు) ఆమోదిస్తారు, మరియు Google ఆ అనుమతులకు మాత్రమే యాప్కు టోకెన్ ఇస్తుంది.
OAuth తనంతట తాను యాక్సెస్ ఇవ్వడానికి రూపొందించబడింది, మీరు ఎవరో చెప్పడానికి కాదు. OpenID Connect (OIDC) అనేది OAuth 2.0 పై ఉన్న ఒక పొర, ఇది ఐడెంటిటీని జోడిస్తుంది — “Google తో సైన్ ఇన్” లేదా “Apple తో సైన్ ఇన్” దీన్నే ఉపయోగిస్తాయి. దీన్ని సెటప్ చేయడానికి మీరు మీ యాప్ను ప్రొవైడర్ వద్ద నమోదు చేసి client ID మరియు client secret పొందుతారు; సీక్రెట్ మీ సర్వర్లోనే ఉంటుంది.
ఒక ఉదాహరణ: క్లయింట్ పోర్టల్ కోసం లాగిన్
ఒక డిజైన్ ఏజెన్సీ క్లయింట్లు తమ ప్రాజెక్ట్లు మరియు ఇన్వాయిస్లు చూసే పోర్టల్ నిర్మిస్తున్నారని అనుకుందాం.
- ఆథెంటికేషన్: క్లయింట్లు ఇమెయిల్ మరియు మ్యాజిక్ లింక్తో లాగిన్ అవుతారు, కాబట్టి నిర్వహించడానికి పాస్వర్డ్లు ఉండవు. ఏజెన్సీ స్టాఫ్ Google Workspace ఖాతాలతో లాగిన్ అవుతారు.
- రోల్స్: ప్రతి యూజర్కు ఒక రోల్ ఉంటుంది —
clientలేదాstaff. - ఆథరైజేషన్ నియమాలు:
| చర్య | క్లయింట్ | స్టాఫ్ |
|---|---|---|
| తమ కంపెనీ ప్రాజెక్ట్లు చూడటం | అవును | అవును |
| ఇతర కంపెనీల ప్రాజెక్ట్లు చూడటం | కాదు | అవును |
| ప్రాజెక్ట్కు ఫైల్ అప్లోడ్ చేయడం | తమ ప్రాజెక్ట్లకు మాత్రమే | అవును |
| ఇన్వాయిస్ను చెల్లించినట్లు గుర్తించడం | కాదు | అవును |
- ఎక్కడ అమలు చేయబడుతుంది: సర్వర్లో, ప్రతి రిక్వెస్ట్కు. సర్వర్ లాగిన్ అయిన యూజర్ను వెతుకుతుంది, తర్వాత
project.company_idయూజర్ కంపెనీతో సరిపోయే ప్రాజెక్ట్లను మాత్రమే తిరిగి ఇస్తుంది. “Paid గుర్తు పెట్టు” బటన్ను దాచడం సరిపోదు — ఎండ్పాయింట్ స్వయంగా నిరాకరించాలి.
సాధారణ పదాల వివరణ
| పదం | అర్థం |
|---|---|
| ఆథెంటికేషన్ (AuthN) | ఒకరు ఎవరో నిర్ధారించడం. |
| ఆథరైజేషన్ (AuthZ) | వారు ఏమి చేయవచ్చో నిర్ణయించడం. |
| సెషన్ | రిక్వెస్ట్ల మధ్య మీరు లాగిన్ అయి ఉన్నారని యాప్ గుర్తుంచుకోవడం. |
| కుకీ | ప్రతి రిక్వెస్ట్తో బ్రౌజర్ సైట్కు తిరిగి పంపే చిన్న డేటా ముక్క. |
| JWT | JSON Web Token: యూజర్ ID మరియు గడువు వంటి క్లెయిమ్లు కలిగిన సంతకం చేసిన, చిన్న టోకెన్. |
| రోల్ / అనుమతి | యాక్సెస్ నిర్ణయించే admin లేదా member వంటి లేబుళ్లు. |
| MFA / 2FA | ఆథెంటికేటర్ యాప్ కోడ్ వంటి రెండో రుజువు అవసరం చేయడం. |
| SSO | సింగిల్ సైన్-ఆన్: అనేక యాప్లకు ఒకే లాగిన్ (తరచుగా కంపెనీ ఖాతా). |
| 401 vs 403 | “మీరు ఎవరు?” (ఆథెంటికేట్ కాలేదు) vs “మీరు అది చేయలేరు” (ఆథరైజ్ కాలేదు). |
సాధారణ తప్పులు మరియు అపోహలు
- పేజీలో మాత్రమే అనుమతులు తనిఖీ చేయడం. బ్రౌజర్ బటన్ను దాచినా API తనిఖీ చేయకపోతే, ఎవరైనా API ను నేరుగా కాల్ చేయగలరు.
- URL నుండి వచ్చే IDలను నమ్మడం.
/invoices/1042ఇన్వాయిస్ 1042 లాగిన్ అయిన యూజర్కు చెందినదో తనిఖీ చేయాలి. - సొంత క్రిప్టో రూపొందించడం. తెలిసిన లైబ్రరీలు లేదా ప్రొవైడర్లను ఉపయోగించండి; AI ఒక హ్యాషింగ్ పద్ధతిని కనిపెట్టనివ్వకండి.
- బలహీనమైన పాస్వర్డ్ రీసెట్. రీసెట్ లింక్లు ఒకసారి మాత్రమే వాడేలా, త్వరగా గడువు ముగిసేలా ఉండాలి, మరియు ఇమెయిల్కు ఖాతా ఉందో లేదో చూపించకూడదు.
- మీ లాగిన్ను మీ బిల్డర్ లాగిన్తో కలపడం. మీ యాప్ యూజర్లు, మీరు నిర్మించడానికి ఉపయోగించే టూల్పై మీ ఖాతా నుండి వేరుగా ఉంటారు.
- లాగిన్పై రేట్ లిమిట్ లేకపోవడం. అది లేకుండా, దాడి చేసేవారు అనంతంగా పాస్వర్డ్లు ప్రయత్నించగలరు.
మీ AI బిల్డర్ను ఏమి అడగాలి
- “[తెలిసిన లైబ్రరీ లేదా ప్రొవైడర్] ఉపయోగించి సైన్-అప్ మరియు లాగిన్ జోడించు. కస్టమ్ పాస్వర్డ్ హ్యాషింగ్ రాయవద్దు.”
- “పాస్వర్డ్లను bcrypt లేదా Argon2 తో హ్యాష్ చేసి నిల్వ చేయి.”
- “సెషన్ కోసం HttpOnly, Secure కుకీలు ఉపయోగించు.”
- “రోల్స్ జోడించు: admin మరియు member. ప్రతి ఎండ్పాయింట్ను మరియు దాన్ని ఏ రోల్స్ కాల్ చేయవచ్చో జాబితా చేయి.”
- “యూజర్లు తమ సొంత రికార్డులను మాత్రమే చదవగలరు మరియు ఎడిట్ చేయగలరు అని సర్వర్లో అమలు చేయి. తర్వాత మీరు ఎలా తనిఖీ చేశారో చూపించు.”
- “ఒక గంటలో గడువు ముగిసే ఒకసారి-వాడే లింక్లతో పాస్వర్డ్ రీసెట్ జోడించు.”
- “లాగిన్ ప్రయత్నాలపై రేట్ లిమిట్ పెట్టు.”
ఆ తర్వాత మీరే పరీక్షించండి: రెండు ఖాతాలు సృష్టించి, ఒకదానిలో లాగిన్ అయినప్పుడు మరొకదాని డేటాను చేరుకోవడానికి ప్రయత్నించండి. లాగిన్ జోడించే గైడ్ మరియు సెక్యూరిటీ చెక్లిస్ట్ మరింత వివరంగా చెప్తాయి.
Mythex లో ఆథెంటికేషన్
మీ యాప్ యూజర్ల కోసం Mythex స్వంత బిల్ట్-ఇన్ ఆథ్ ఉత్పత్తిని అందించదు; మీరు ఒక విధానాన్ని ఎంచుకుంటారు — మీ ప్రాజెక్ట్ డేటాబేస్లో ఇమెయిల్ మరియు పాస్వర్డ్, లేదా హోస్ట్ చేసిన ప్రొవైడర్ SDK — మరియు జోడించమని ఏజెంట్ను అడుగుతారు. ప్రొవైడర్ కీలు ప్రాజెక్ట్ సీక్రెట్లలో ఉంచబడతాయి, చాట్లో కాదు. ఇది Mythex లోకి మీరు ఎలా సైన్ ఇన్ అవుతారో దానికి వేరుగా ఉంటుంది. డాక్స్ రెసిపీ మీ యాప్కు లాగిన్ జోడించడం లో మీరు మార్చుకోగల స్టార్టర్ ప్రాంప్ట్ ఉంది, మరియు API అంటే ఏమిటి ఆ సర్వర్-సైడ్ తనిఖీలు ఎక్కడ ఉంటాయో వివరిస్తుంది.
ప్రశ్నలు
ఆథెంటికేషన్ మరియు ఆథరైజేషన్ మధ్య తేడా ఏమిటి?
ఆథెంటికేషన్ మీరు ఎవరో తనిఖీ చేస్తుంది, ఉదాహరణకు మీ పాస్వర్డ్ను ధృవీకరించడం ద్వారా. ఆథరైజేషన్ మీరు తెలిసిన తర్వాత ఏమి చేయడానికి అనుమతి ఉందో నిర్ణయిస్తుంది, ఉదాహరణకు అడ్మిన్ పేజీ చూడగలరా లేదా వేరొకరి బుకింగ్ను ఎడిట్ చేయగలరా. యాప్లకు రెండూ అవసరం.
OAuth అంటే ఏమిటి?
OAuth 2.0 అనేది ఒక ప్రామాణిక పద్ధతి, దీని ద్వారా ఒక యాప్ మీ పాస్వర్డ్ చూడకుండానే మరో సర్వీస్లోని మీ ఖాతాకు పరిమిత యాక్సెస్ పొందగలదు. “Google తో సైన్ ఇన్” OpenID Connect ను వాడుతుంది, ఇది OAuth 2.0 పై నిర్మించిన ఐడెంటిటీ పొర, కాబట్టి యాప్ మీరు ఎవరో Google నుండి తెలుసుకుంటుంది.
నా యాప్ పాస్వర్డ్లను నిల్వ చేయాలా?
చదవగలిగే రూపంలో ఎప్పుడూ కాదు. మీరు ఇమెయిల్ మరియు పాస్వర్డ్ లాగిన్ వాడితే, పాస్వర్డ్లను సాల్ట్ చేసి హ్యాష్ చేసి నిల్వ చేయాలి, పాస్వర్డ్ల కోసం రూపొందించిన నెమ్మది అల్గారిథమ్తో, ఉదాహరణకు Argon2 లేదా bcrypt. చాలా యాప్లు హోస్ట్ చేసిన ఆథ్ ప్రొవైడర్, సోషల్ లాగిన్ లేదా ఇమెయిల్ మ్యాజిక్ లింక్లను ఉపయోగించి ఈ సమస్యను తప్పిస్తాయి.
సెషన్లా లేక టోకెన్లా — నా యాప్ ఏది ఉపయోగించాలి?
రెండూ పని చేస్తాయి. సెషన్ లాగిన్ స్థితిని సర్వర్లో ఉంచుతుంది మరియు బ్రౌజర్కు కుకీలో ఒక యాదృచ్ఛిక ID ఇస్తుంది, దీన్ని రద్దు చేయడం సులభం. JWT వంటి టోకెన్ సంతకం చేసిన సమాచారాన్ని తనలోనే కలిగి ఉంటుంది, ఇది APIలు మరియు మొబైల్ క్లయింట్లకు సరిపోతుంది, కానీ గడువు ముగిసేలోపు రద్దు చేయడం కష్టం. సాధారణ వెబ్ యాప్కు కుకీ-ఆధారిత సెషన్లు మంచి డిఫాల్ట్.