पाठ 9 / 26

Gateway पर Authentication

API keys या tokens को edge पर एक बार validate करें और पहचान services को दें।

जल्दी, सस्ते में अस्वीकार करें

Gateway पर authentication का मतलब है कि अप्रमाणित अनुरोध आपकी services तक कभी नहीं पहुँचते, जिससे उनकी क्षमता बचती है और हमले की सतह घटती है। Gateway API keys जाँच सकता है (lookup), JWTs validate कर सकता है (identity provider की public keys से signature, issuer, audience, expiry), या बाहरी authorisation service बुला सकता है। ग़ायब या अमान्य credentials पर 401 और पहचान ज्ञात होकर भी अनुमति न होने पर 403 लौटाएँ। सत्यापित पहचान आगे भेजें (header या दोबारा हस्ताक्षरित token) और services को फिर भी अपनी object-level authorisation लागू करने दें, क्योंकि gateway नहीं जान सकता कि कौन-सा order किस user का है। Defence in depth का मतलब है कि compromised gateway का अर्थ compromised system न हो।

एक बार, दरवाज़े पर जाँचें

Gateway callers को authenticate करता है, दुरुपयोग सीमित करता है और TLS terminate करता है ताकि services सरल रहें।

तीन नियंत्रण: पहचान, सीमा, encrypt।
चित्र 3.1 — पहचान, सीमा और encrypt।

API-key जाँच (config)

map X-API-Key header को हाँ/ना flag में बदलता है और वैध न होने पर location 401 लौटाती है। असली gateways keys को store से लोड करते हैं, hard-code कभी नहीं।

map $http_x_api_key $api_ok { default 0; "demo-key-123" 1; }

location /orders/ {
  if ($api_ok = 0) { return 401 '{"error":"missing or invalid API key"}\n'; }
  proxy_pass http://orders_weighted/;
}

Key नहीं, ग़लत key, सही key, चलाकर

मैंने यह Docker में असली nginx 1.27 gateway पर चलाया, upstreams के रूप में छोटी Node.js services के साथ (पूरा setup केस स्टडी में)। Key के बिना और ग़लत key के साथ gateway ख़ुद 401 देता है (पहली पंक्ति JSON body दिखाती है); सही key के साथ अनुरोध proxy होकर 200 लौटाता है।

GET /orders/x
GET /orders/x  X-API-Key: wrong
GET /orders/x  X-API-Key: demo-key-123

Output:

401 {"error":"missing or invalid API key"}
401 200

Users के लिए JWT validation, apps के लिए keys

API keys application की पहचान बताती हैं; वे नहीं बतातीं कि कौन-सा व्यक्ति बुला रहा है। User-उन्मुख APIs के लिए edge पर validate होने वाले OAuth 2.0 / OIDC tokens चुनें।

त्वरित जाँच: बिना credentials वाले अनुरोध के लिए gateway को कौन-सा status लौटाना चाहिए?

  • 204 No Content
  • 403 Forbidden
  • 401 Unauthorized
  • 302 Found
Answer

401 Unauthorized — 401 का मतलब caller authenticated नहीं; 403 का मतलब authenticated पर अनुमति नहीं।