HISTORIA YA OAUTH: KUTOKA NYWILA HADI VIWANGO VYA KIMATAIFA

Unaiona kila siku. Unabonyeza "Login with Google" au "Login with GitHub." Hupigi namba ya nywila. Unaingia kwenye tovuti papo hapo.

Hii inafanya kazi kwa sababu ya OAuth. Ni kiwango cha kimataifa cha usalama. Lakini haikuanza hivi. Ilikua ili kutatua matatizo makubwa.

Tatizo la Nywila

Katika siku za awali, uliunda nywila mpya kwa kila tovuti. Hii ilisababisha matatizo makubwa matatu:

  • Watu walitumia nywila ileile kila mahali. Ikiwa tovuti moja ilivuja, kila akaunti ilikuwa hatarini.
  • Watu walisahau nywila. Walitumia muda mwingi zaidi kubonyeza "forgot password" kuliko kutumia mtandao.
  • Tovuti zilioniona nywila yako halisi. Ikiwa tovuti ilidukuliwa, nywila yako ilipotea.

Mageuzi ya Usalama

  1. Basic Auth: Ulituma jina lako la mtumiaji na nywila yako kwa kila ombi. Ikiwa hukutumia HTTPS, wadukuzi wangeweza kuona kila kitu.

  2. Session Cookies: Uliingia mara moja na kupata session ID. Ilikuwa bora zaidi, lakini cookies zinaweza kuibwa kupitia mashambulizi kama XSS au CSRF. Pia, tovuti moja haikuweza kutumia utambulisho wako kuwasiliana na tovuti nyingine.

  3. API Keys: Uliipa tovuti funguo maalum. Hii ilikuwa bora kwa sababu hukuituma nywila yako. Hata hivyo, API keys mara nyingi zina nguvu kubwa mno. Ukimpa programu (app) API key, programu hiyo inaweza kuwa na uwezo wa kusoma barua pepe zako, kutuma ujumbe, na kufuta akaunti yako. Ni kama kumpa dereva wa hoteli (valet) funguo za gari lako, lakini funguo hizo pia zinafungua nyumba yako.

Suluhisho la OAuth: Funguo ya Valet

OAuth ilibadilisha mchezo. Badala ya kutoa nywila yako, unatoa "token." Ifikirie kama funguo ya valet. Funguo ya valet inamruhusu dereva kuegesha gari lako, lakini haimruhusu kufungua sehemu ya mizigo ya gari lako au kuingia nyumbani kwako.

Jinsi OAuth Inavyofanya Kazi Kiuhalisia:

  • Unataka kutumia Canva na kuchukua picha kutoka Google.
  • Canva inaomba ruhusa kwa Google.
  • Google inakuuliza: "Je, Canva inaweza kuona picha zako?"
  • Unasema: "Ndiyo, lakini uone tu. Usiruhusu wafute chochote."
  • Google inampa Canva token maalum.

Canva haioni kamwe nywila yako ya Google. Hata kama mdukuzi akiiba token hiyo, wanaweza kuona picha tu kwa muda mfupi. Hawezi kubadilisha nywila yako au kuhamisha pesa zako.

Usalama wa Kisasa: PKCE

Programu za simu na programu za wavuti zina udhaifu. Hawezi kuficha siri vizuri. Ili kurekebisha hili, tunatumia PKCE (Proof Key for Code Exchange).

Inafanya kazi kama mfumo wa uhifadhi:

  • Programu inatengeneza nambari ya siri (the verifier).
  • Programu inatuma toleo lililofichwa (hashed) la nambari hiyo (the challenge) kwa Google.
  • Programu inapoomba token, inatuma nambari ile ile ya siri ya awali.
  • Google inakagua ikiwa nambari hiyo inalingana na "challenge".

Ikiwa zinafanana, Google inajua kuwa ni programu ile ile. Ikiwa hazifanani, Google inazuia ombi hilo. Hii inawazuia wadukuzi kuiba nambari yako ya idhini (authorization code).

Ramani ya OAuth

  • 2007 (OAuth 1.0): Ilikuwa tata sana na ilitumia hesabu nzito.
  • 2012 (OAuth 2.0): Haraka na rahisi zaidi. Ilitumia token na ilihitaji HTTPS.
  • 2016 (OAuth 2.0 + PKCE): Iliongeza usalama kwa programu za simu na programu za kisasa za wavuti.
  • 2023 (OAuth 2.1): Kiwango kipya cha dhahabu. Inaondoa mbinu za zamani zisizo salama.

Somo la Msingi: Usitoe kamwe nywila yako kwa programu nyingine. Wape tiketi yenye ukomo inayopita muda wake. Wewe unabaki na udhibiti.

Chanzo: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4