API ದೃಢೀಕರಣ (Authentication): API Keys vs JWT vs OAuth 2.0
ನಾನು ಒಮ್ಮೆ ದೃಢೀಕರಣವಿಲ್ಲದ (without authentication) API ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿದ್ದೆ. ಅದು ಕೇವಲ ಒಂದು ಸರಳ ಆಂತರಿಕ ಸಾಧನ (internal tool) ಎಂದು ನಾನು ಭಾವಿಸಿದ್ದೆ. ಎರಡು ವಾರಗಳ ನಂತರ, ಸ್ಪರ್ಧಿಯ ಬೋಟ್ ಬೆಳಗಿನ 3 ಗಂಟೆಗೆ ನಮ್ಮ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಸ್ಕ್ರೇಪ್ ಮಾಡಿತು. ಆ ತಪ್ಪಿನಿಂದಾಗಿ ನನಗೆ $1,200 AWS ಬಿಲ್ಗಳು ಮತ್ತು ಬಾಸ್ ಜೊತೆಗಿನ ಮುಜುಗರದ ಮಾತುಕತೆ ಎದುರಾಯಿತು.
ದೃಢೀಕರಣವು (Authentication) ಅಷ್ಟು ಸುಲಭ ಅಥವಾ ಮೋಜಿನ ವಿಷಯವಲ್ಲ. ಆದರೆ ನೀವು ಇದನ್ನು ತಪ್ಪಾಗಿ ಮಾಡಿದರೆ, ಅದು ಬೆಳಗಿನ 3 ಗಂಟೆಗೆ ಅಲರ್ಟ್ ಮೂಲಕ ನಿಮ್ಮನ್ನು ಎಬ್ಬಿಸುತ್ತದೆ.
ಈ ಮೂರು ಪ್ರಮುಖ ಮಾದರಿಗಳ (patterns) ನಡುವೆ ಹೇಗೆ ಆಯ್ಕೆ ಮಾಡಬೇಕೆಂದು ಇಲ್ಲಿದೆ.
- API Keys ಇವು ಉದ್ದವಾದ ಯಾದೃಚ್ಛಿಕ ಸ್ಟ್ರಿಂಗ್ಗಳಾಗಿವೆ (random strings). ಕ್ಲೈಂಟ್ ಪ್ರತಿ ವಿನಂತಿಯೊಂದಿಗೆ (request) ಇವುಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ. ಇವು ಸರಳ ಮತ್ತು ವೇಗವಾಗಿವೆ.
ಇವುಗಳನ್ನು ಇವುಗಳಿಗಾಗಿ ಬಳಸಿ: • ಹವಾಮಾನ ಅಥವಾ ಸ್ಟಾಕ್ ಡೇಟಾದಂತಹ ಸಾರ್ವಜನಿಕ APIಗಳಿಗಾಗಿ. • ಸರ್ವರ್ನಿಂದ ಸರ್ವರ್ಗೆ ಸಂವಹನಕ್ಕಾಗಿ (Server to server communication). • ಹೊಸ ಐಡಿಯಾದ ಪ್ರೊಟೊಟೈಪಿಂಗ್ಗಾಗಿ. • ಆಂತರಿಕ ಮೈಕ್ರೋಸರ್ವಿಸ್ಗಳಿಗಾಗಿ.
- JWT (JSON Web Tokens) ಇವು ಸಹಿ ಮಾಡಲಾದ ಟೋಕನ್ಗಳಾಗಿವೆ (signed tokens). ಇವುಗಳ ಒಳಗೆ ಬಳಕೆದಾರರ ಮಾಹಿತಿ ಮತ್ತು ಅನುಮತಿಗಳನ್ನು (permissions) ಹೊಂದಿರುತ್ತವೆ. ಇವುಗಳನ್ನು ದೃಢೀಕರಿಸಲು ನೀವು ಡೇಟಾಬೇಸ್ ಹುಡುಕುವ ಅಗತ್ಯವಿಲ್ಲ.
ಇವುಗಳನ್ನು ಇವುಗಳಿಗಾಗಿ ಬಳಸಿ: • ಪ್ರತಿಯೊಂದು ಸೇವೆಯು ತನ್ನನ್ನು ತಾನೇ ದೃಢೀಕರಿಸಿಕೊಳ್ಳುವ ಮೈಕ್ರೋಸರ್ವಿಸ್ಗಳಿಗಾಗಿ. • ಮೊಬೈಲ್ ಆಪ್ಗಳು ಮತ್ತು ಸಿಂಗಲ್ ಪೇಜ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ. • ಸ್ಕೇಲ್ ಆಗಬೇಕಾದ ಹೆಚ್ಚಿನ ಟ್ರಾಫಿಕ್ ಇರುವ APIಗಳಿಗಾಗಿ.
ಎಚ್ಚರಿಕೆ: JWT ನಲ್ಲಿ ಅತಿಯಾದ ಡೇಟಾವನ್ನು ಹಾಕಬೇಡಿ. ಅದನ್ನು ಚಿಕ್ಕದಾಗಿ ಇರಿಸಿ. ಕೇವಲ ಬಳಕೆದಾರರ ID ಮತ್ತು ರೋಲ್ಗಳನ್ನು (roles) ಮಾತ್ರ ಸೇರಿಸಿ.
- OAuth 2.0 ಇದು ನಿಯೋಜನೆಗಾಗಿ (delegation) ಬಳಸುವ ಒಂದು ಪ್ರೋಟೋಕಾಲ್ ಆಗಿದೆ. ಇದು ಬಳಕೆದಾರರು ತಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳದೆ ತಮ್ಮ ಡೇಟಾಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ನೀಡಲು ಅನುಮತಿಸುತ್ತದೆ. "Sign in with Google" ಅನ್ನು ನೆನಪಿಸಿಕೊಳ್ಳಿ.
ಇವುಗಳನ್ನು ಇವುಗಳಿಗಾಗಿ ಬಳಸಿ: • ಥರ್ಡ್ ಪಾರ್ಟಿ ಇಂಟಿಗ್ರೇಷನ್ಗಳಿಗಾಗಿ. • ಬಳಕೆದಾರರು ವಿವಿಧ ಆಪ್ಗಳಿಗೆ ನಿರ್ದಿಷ್ಟ ಅನುಮತಿಗಳನ್ನು ನೀಡುವ ವ್ಯವಸ್ಥೆಗಳಿಗಾಗಿ. • ಎಂಟರ್ಪ್ರೈಸ್ ಸಾಫ್ಟ್ವೇರ್ಗಳಿಗಾಗಿ.
ಇವುಗಳಿಗಾಗಿ ಇದನ್ನು ತಪ್ಪಿಸಿ: • ಸರಳ ಆಂತರಿಕ APIಗಳಿಗಾಗಿ. • ವೇಗವಾಗಿ ಕೆಲಸ ಮುಗಿಸಬೇಕಾದ ಸಣ್ಣ ತಂಡಗಳಿಗಾಗಿ.
ತ್ವರಿತ ನಿರ್ಧಾರ ಮಾರ್ಗದರ್ಶಿ (Quick Decision Guide):
• ಸಾರ್ವಜನಿಕ API: API Keys ಬಳಸಿ. • ಆಂತರಿಕ ಮೈಕ್ರೋಸರ್ವಿಸ್ಗಳು: API Keys ಬಳಸಿ. • ಮೊಬೈಲ್ ಆಪ್ ಬ್ಯಾಕೆಂಡ್: JWT ಬಳಸಿ. • ಬಳಕೆದಾರರ ರೋಲ್ಗಳಿರುವ SaaS: JWT ಬಳಸಿ. • ಥರ್ಡ್ ಪಾರ್ಟಿ ಪ್ರವೇಶ: OAuth 2.0 ಬಳಸಿ.
ನನ್ನ ಮೂಲಮಂತ್ರ (Rule of thumb):
- ಆಂತರಿಕ ಸೇವೆಗಳಿಗಾಗಿ API Keys ಮೂಲಕ ಪ್ರಾರಂಭಿಸಿ.
- ಬಳಕೆದಾರರ ದೃಢೀಕರಣದ ಅಗತ್ಯವಿದ್ದಾಗ JWT ಅನ್ನು ಸೇರಿಸಿ.
- ಕ್ಲೈಂಟ್ ಕೇಳಿದಾಗ ಅಥವಾ ನೀವು ಒಂದು ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ನಿರ್ಮಿಸಿದಾಗ ಮಾತ್ರ OAuth 2.0 ಬಳಸಿ.
ಎಂದಿಗೂ ಬಿಡುಗಡೆಯಾಗದ ಪರಿಪೂರ್ಣ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸಬೇಡಿ. ಕೆಲಸ ಮಾಡುವ ಸುರಕ್ಷಿತ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸಿ.
ನೀವು ಯಾವ ದೃಢೀಕರಣ ಮಾದರಿಯನ್ನು ಬಳಸುತ್ತೀರಿ? ಕಾಮೆಂಟ್ನಲ್ಲಿ ತಿಳಿಸಿ.
Source: https://dev.to/sirmax/api-authentication-in-2026-api-keys-vs-jwt-vs-oauth-20-when-to-use-what-h7c
