API Authentication: API Keys vs JWT vs OAuth 2.0

ਮੈਂ ਇੱਕ ਵਾਰ ਬਿਨਾਂ authentication ਦੇ ਇੱਕ API ਲਾਂਚ ਕੀਤਾ ਸੀ। ਮੈਨੂੰ ਲੱਗਿਆ ਸੀ ਕਿ ਇਹ ਇੱਕ ਸਧਾਰਨ ਅੰਦਰੂਨੀ (internal) ਟੂਲ ਹੈ। ਦੋ ਹਫ਼ਤਿਆਂ ਬਾਅਦ, ਇੱਕ ਮੁਕਾਬਲੇਬਾਜ਼ ਦੇ ਬੋਟ (bot) ਨੇ ਰਾਤ ਦੇ 3 ਵਜੇ ਸਾਡੇ ਡੇਟਾਬੇਸ ਨੂੰ ਸਕ੍ਰੇਪ (scrape) ਕਰ ਲਿਆ। ਉਸ ਗਲਤੀ ਕਾਰਨ ਮੈਨੂੰ AWS ਬਿੱਲਾਂ ਵਿੱਚ $1,200 ਦਾ ਨੁਕਸਾਨ ਹੋਇਆ ਅਤੇ ਆਪਣੇ ਬੌਸ ਨਾਲ ਇੱਕ ਅਜੀਬ ਗੱਲਬਾਤ ਕਰਨੀ ਪਈ।

Authentication ਕਰਨਾ ਕੋਈ ਮਜ਼ੇਦਾਰ ਕੰਮ ਨਹੀਂ ਹੈ। ਪਰ ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਵਿੱਚ ਗਲਤੀ ਕਰਦੇ ਹੋ, ਤਾਂ ਇਹ ਰਾਤ ਦੇ 3 ਵਜੇ ਇੱਕ ਅਲਰਟ (alert) ਨਾਲ ਤੁਹਾਨੂੰ ਜਗਾ ਦੇਵੇਗਾ।

ਇੱਥੇ ਤਿੰਨ ਮੁੱਖ ਪੈਟਰਨਾਂ ਵਿੱਚੋਂ ਚੋਣ ਕਰਨ ਦਾ ਤਰੀਕਾ ਦਿੱਤਾ ਗਿਆ ਹੈ।

  • API Keys ਇਹ ਲੰਬੀਆਂ ਰੈਂਡਮ ਸਟ੍ਰਿੰਗਾਂ (random strings) ਹੁੰਦੀਆਂ ਹਨ। ਕਲਾਇੰਟ ਹਰ ਰਿਕਵੈਸਟ ਦੇ ਨਾਲ ਇਹਨਾਂ ਨੂੰ ਭੇਜਦਾ ਹੈ। ਇਹ ਸਰਲ ਅਤੇ ਤੇਜ਼ ਹੁੰਦੀਆਂ ਹਨ।

ਇਹਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ: • ਮੌਸਮ ਜਾਂ ਸਟਾਕ ਡੇਟਾ ਵਰਗੀਆਂ Public APIs ਲਈ। • Server to server ਸੰਚਾਰ ਲਈ। • ਕਿਸੇ ਨਵੇਂ ਵਿਚਾਰ ਦੇ ਪ੍ਰੋਟੋਟਾਈਪਿੰਗ (prototyping) ਲਈ। • Internal microservices ਲਈ।

  • JWT (JSON Web Tokens) ਇਹ ਸਾਈਨ ਕੀਤੇ ਟੋਕਨ (signed tokens) ਹੁੰਦੇ ਹਨ। ਇਹ ਟੋਕਨ ਦੇ ਅੰਦਰ ਹੀ ਯੂਜ਼ਰ ਦੀ ਜਾਣਕਾਰੀ ਅਤੇ ਇਜਾਜ਼ਤਾਂ (permissions) ਲੈ ਕੇ ਚਲਦੇ ਹਨ। ਇਹਨਾਂ ਨੂੰ ਵੈਲੀਡੇਟ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਡੇਟਾਬੇਸ ਲੁੱਕਅੱਪ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ।

ਇਹਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ: • Microservices ਲਈ ਜਿੱਥੇ ਹਰ ਸਰਵਿਸ ਆਪਣੇ ਆਪ ਨੂੰ ਵੈਲੀਡੇਟ ਕਰਦੀ ਹੈ। • ਮੋਬਾਈਲ ਐਪਸ ਅਤੇ single page applications ਲਈ। • ਉੱਚ ਟ੍ਰੈਫਿਕ ਵਾਲੀਆਂ APIs ਲਈ ਜਿਨ੍ਹਾਂ ਨੂੰ scale ਕਰਨ ਦੀ ਲੋੜ ਹੈ।

ਚੇਤਾਵਨੀ: JWT ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਡੇਟਾ ਨਾ ਪਾਓ। ਇਸਨੂੰ ਛੋਟਾ ਰੱਖੋ। ਸਿਰਫ਼ user ID ਅਤੇ roles ਹੀ ਸ਼ਾਮਲ ਕਰੋ।

  • OAuth 2.0 ਇਹ ਡੈਲੀਗੇਸ਼ਨ (delegation) ਲਈ ਇੱਕ ਪ੍ਰੋਟੋਕੋਲ ਹੈ। ਇਹ ਇੱਕ ਯੂਜ਼ਰ ਨੂੰ ਪਾਸਵਰਡ ਸਾਂਝਾ ਕੀਤੇ ਬਿਨਾਂ ਆਪਣੇ ਡੇਟਾ ਤੱਕ ਪਹੁੰਚ ਦੇਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। "Sign in with Google" ਬਾਰੇ ਸੋਚੋ।

ਇਸਦੀ ਵਰਤੋਂ ਕਰੋ: • Third party integrations ਲਈ। • ਅਜਿਹੇ ਸਿਸਟਮਾਂ ਲਈ ਜਿੱਥੇ ਯੂਜ਼ਰ ਵੱਖ-ਵੱਖ ਐਪਸ ਨੂੰ ਖਾਸ ਇਜਾਜ਼ਤਾਂ ਦਿੰਦੇ ਹਨ। • Enterprise software ਲਈ।

ਇਸ ਤੋਂ ਬਚੋ: • ਸਧਾਰਨ internal APIs ਲਈ। • ਛੋਟੀਆਂ ਟੀਮਾਂ ਲਈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਕੰਮ ਪੂਰਾ (ship) ਕਰਨ ਦੀ ਲੋੜ ਹੈ।

ਤੇਜ਼ੀ ਨਾਲ ਫੈਸਲਾ ਲੈਣ ਲਈ ਗਾਈਡ:

• Public API: API Keys ਦੀ ਵਰਤੋਂ ਕਰੋ। • Internal Microservices: API Keys ਦੀ ਵਰਤੋਂ ਕਰੋ। • Mobile App Backend: JWT ਦੀ ਵਰਤੋਂ ਕਰੋ। • User roles ਵਾਲੇ SaaS ਲਈ: JWT ਦੀ ਵਰਤੋਂ ਕਰੋ। • Third party access ਲਈ: OAuth 2.0 ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਮੇਰਾ ਆਮ ਨਿਯਮ (rule of thumb):

  1. Internal services ਲਈ API Keys ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ।
  2. ਜਦੋਂ ਤੁਹਾਨੂੰ user authentication ਦੀ ਲੋੜ ਹੋਵੇ ਤਾਂ JWT ਜੋੜੋ।
  3. OAuth 2.0 ਦੀ ਵਰਤੋਂ ਉਦੋਂ ਹੀ ਕਰੋ ਜਦੋਂ ਕੋਈ ਕਲਾਇੰਟ ਇਸਦੀ ਮੰਗ ਕਰੇ ਜਾਂ ਤੁਸੀਂ ਕੋਈ ਪਲੇਟਫਾਰਮ ਬਣਾ ਰਹੇ ਹੋਵੋ।

ਅਜਿਹਾ ਸੰਪੂਰਨ ਸਿਸਟਮ ਨਾ ਬਣਾਓ ਜੋ ਕਦੇ ਲਾਂਚ ਹੀ ਨਾ ਹੋ ਸਕੇ। ਇੱਕ ਸੁਰੱਖਿਅਤ ਸਿਸਟਮ ਬਣਾਓ ਜੋ ਕੰਮ ਕਰਦਾ ਹੋਵੇ।

ਤੁਸੀਂ ਕਿਹੜਾ auth pattern ਵਰਤਦੇ ਹੋ? ਮੈਨੂੰ ਕੁਮੈਂਟਸ ਵਿੱਚ ਦੱਸੋ।

ਸਰੋਤ: https://dev.to/sirmax/api-authentication-in-2026-api-keys-vs-jwt-vs-oauth-20-when-to-use-what-h7c