OAuth ಇತಿಹಾಸ: ಪಾಸ್ವರ್ಡ್ಗಳಿಂದ ಜಾಗತಿಕ ಮಾನದಂಡಗಳವರೆಗೆ
ನೀವು ಇದನ್ನು ಪ್ರತಿದಿನ ನೋಡುತ್ತೀರಿ. ನೀವು "Login with Google" ಅಥವಾ "Login with GitHub" ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡುತ್ತೀರಿ. ನೀವು ಪಾಸ್ವರ್ಡ್ ಟೈಪ್ ಮಾಡುವುದಿಲ್ಲ. ನೀವು ತಕ್ಷಣವೇ ಸೈಟ್ಗೆ ಪ್ರವೇಶಿಸುತ್ತೀರಿ.
ಇದು OAuth ಕಾರಣದಿಂದ ಸಾಧ್ಯವಾಗಿದೆ. ಇದು ಸುರಕ್ಷತೆಗಾಗಿ ಜಾಗತಿಕ ಮಾನದಂಡವಾಗಿದೆ. ಆದರೆ ಇದು ಪ್ರಾರಂಭದಲ್ಲಿ ಹೀಗಿರಲಿಲ್ಲ. ದೊಡ್ಡ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಇದು ವಿಕಸನಗೊಂಡಿದೆ.
ಪಾಸ್ವರ್ಡ್ಗಳ ಸಮಸ್ಯೆ
ಆರಂಭಿಕ ದಿನಗಳಲ್ಲಿ, ನೀವು ಪ್ರತಿಯೊಂದು ವೆಬ್ಸೈಟ್ಗಾಗಿ ಹೊಸ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ರಚಿಸುತ್ತಿದ್ದಿರಿ. ಇದು ಮೂರು ದೊಡ್ಡ ಸಮಸ್ಯೆಗಳನ್ನು ಉಂಟುಮಾಡಿತು:
- ಜನರು ಎಲ್ಲೆಡೆ ಒಂದೇ ಪಾಸ್ವರ್ಡ್ ಬಳಸುತ್ತಿದ್ದರು. ಒಂದು ಸೈಟ್ ಸೋರಿಕೆಯಾದರೆ, ಎಲ್ಲಾ ಖಾತೆಗಳು ಅಪಾಯದಲ್ಲಿದ್ದವು.
- ಜನರು ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಮರೆತುಬಿಡುತ್ತಿದ್ದರು. ಅವರು ವೆಬ್ ಬಳಸುವುದಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ "forgot password" ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡುವುದರಲ್ಲೇ ಹೆಚ್ಚು ಸಮಯ ಕಳೆಯುತ್ತಿದ್ದರು.
- ವೆಬ್ಸೈಟ್ಗಳು ನಿಮ್ಮ ಮೂಲ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನೋಡುತ್ತಿದ್ದವು. ಒಂದು ಸೈಟ್ ಹ್ಯಾಕ್ ಆದರೆ, ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಕಳೆದುಹೋಗುತ್ತಿತ್ತು.
ಸುರಕ್ಷತೆಯ ವಿಕಸನ
Basic Auth: ನೀವು ಪ್ರತಿ ವಿನಂತಿಯೊಂದಿಗೆ (request) ನಿಮ್ಮ ಬಳಕೆದಾರರ ಹೆಸರು ಮತ್ತು ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಕಳುಹಿಸುತ್ತಿದ್ದಿರಿ. ನೀವು HTTPS ಬಳಸದಿದ್ದರೆ, ಹ್ಯಾಕರ್ಗಳು ಎಲ್ಲವನ್ನೂ ನೋಡಬಹುದಿತ್ತು.
Session Cookies: ನೀವು ಒಮ್ಮೆ ಲಾಗ್ ಇನ್ ಆಗುತ್ತಿದ್ದಿರಿ ಮತ್ತು ಸೇಷನ್ ಐಡಿ (session ID) ಪಡೆಯುತ್ತಿದ್ದಿರಿ. ಇದು ಉತ್ತಮವಾಗಿತ್ತು, ಆದರೆ XSS ಅಥವಾ CSRF ನಂತಹ ದಾಳಿಗಳ ಮೂಲಕ ಕುಕೀಗಳನ್ನು (cookies) ಕದಿಯಬಹುದು. ಅಲ್ಲದೆ, ಒಂದು ಸೈಟ್ ನಿಮ್ಮ ಲಾಗಿನ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಇನ್ನೊಂದು ಸೈಟ್ ಜೊತೆಗೆ ಸಂವಹನ ನಡೆಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿರಲಿಲ್ಲ.
API Keys: ನೀವು ವೆಬ್ಸೈಟ್ಗೆ ಒಂದು ವಿಶೇಷ ಕೀ (key) ನೀಡುತ್ತಿದ್ದಿರಿ. ಇದು ಉತ್ತಮವಾಗಿತ್ತು ಏಕೆಂದರೆ ನೀವು ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಕಳುಹಿಸುತ್ತಿರಲಿಲ್ಲ. ಆದಾಗ್ಯೂ, API ಕೀಗಳು ಹೆಚ್ಚಾಗಿ ಅತಿಯಾದ ಅಧಿಕಾರವನ್ನು ಹೊಂದಿರುತ್ತವೆ. ನೀವು ಒಂದು ಆ್ಯಪ್ಗೆ API ಕೀ ನೀಡಿದರೆ, ಆ ಆ್ಯಪ್ ನಿಮ್ಮ ಇಮೇಲ್ಗಳನ್ನು ಓದಲು, ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಲು ಮತ್ತು ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಅಳಿಸಲು ಅಧಿಕಾರವನ್ನು ಹೊಂದಿರಬಹುದು. ಇದು ಹೋಟೆಲ್ ವ್ಯಾಲೆಟ್ಗೆ (valet) ನಿಮ್ಮ ಕಾರಿನ ಕೀ ನೀಡುವುದರಂತೆ, ಆದರೆ ಆ ಕೀ ನಿಮ್ಮ ಮನೆಯನ್ನು ಕೂಡ ತೆರೆಯುತ್ತದೆ.
OAuth ಪರಿಹಾರ: ವ್ಯಾಲೆಟ್ ಕೀ (The Valet Key)
OAuth ಆಟವನ್ನೇ ಬದಲಿಸಿತು. ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ನೀಡುವ ಬದಲಿಗೆ, ನೀವು ಒಂದು "token" ನೀಡುತ್ತೀರಿ. ಇದನ್ನು ವ್ಯಾಲೆಟ್ ಕೀ ಎಂದು ಭಾವಿಸಿ. ವ್ಯಾಲೆಟ್ ಕೀಯು ಚಾಲಕನಿಗೆ ನಿಮ್ಮ ಕಾರನ್ನು ಪಾರ್ಕ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ಅದು ನಿಮ್ಮ ಕಾರಿನ ಡಿಕಿಯನ್ನು (trunk) ತೆರೆಯಲು ಅಥವಾ ನಿಮ್ಮ ಮನೆಗೆ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುವುದಿಲ್ಲ.
OAuth ಪ್ರಾಯೋಗಿಕವಾಗಿ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ನೀವು Canva ಬಳಸಲು ಬಯಸುತ್ತೀರಿ ಮತ್ತು Google ನಿಂದ ಫೋಟೋಗಳನ್ನು ಪಡೆಯಲು ಬಯಸುತ್ತೀರಿ.
- Canva, Google ನಿಂದ ಅನುಮತಿಯನ್ನು ಕೇಳುತ್ತದೆ.
- Google ನಿಮ್ಮನ್ನು ಕೇಳುತ್ತದೆ: "Canva ನಿಮ್ಮ ಫೋಟೋಗಳನ್ನು ನೋಡಬಹುದೇ?"
- ನೀವು ಹೇಳುತ್ತೀರಿ: "ಹೌದು, ಆದರೆ ಕೇವಲ ನೋಡಲು ಮಾತ್ರ. ಅವು ಏನನ್ನೂ ಅಳಿಸಲು ಬಿಡಬೇಡಿ."
- Google, Canva ಗೆ ಒಂದು ನಿರ್ದಿಷ್ಟ ಟೋಕನ್ ನೀಡುತ್ತದೆ.
Canva ನಿಮ್ಮ Google ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಎಂದಿಗೂ ನೋಡುವುದಿಲ್ಲ. ಹ್ಯಾಕರ್ ಆ ಟೋಕನ್ ಅನ್ನು ಕದಿಯುವ ಸಂದರ್ಭದಲ್ಲೂ, ಅವರು ಸ್ವಲ್ಪ ಸಮಯದವರೆಗೆ ಫೋಟೋಗಳನ್ನು ಮಾತ್ರ ನೋಡಬಹುದು. ಅವರು ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಅಥವಾ ನಿಮ್ಮ ಹಣವನ್ನು ವರ್ಗಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
ಆಧುನಿಕ ಸುರಕ್ಷತೆ: PKCE
ಮೊಬೈಲ್ ಆ್ಯಪ್ಗಳು ಮತ್ತು ವೆಬ್ ಆ್ಯಪ್ಗಳು ಒಂದು ದೌರ್ಬಲ್ಯವನ್ನು ಹೊಂದಿವೆ. ಅವು ರಹಸ್ಯಗಳನ್ನು ಸರಿಯಾಗಿ ಮರೆಮಾಚಲು ಸಾಧ್ಯವಿಲ್ಲ. ಇದನ್ನು ಸರಿಪಡಿಸಲು, ನಾವು PKCE (Proof Key for Code Exchange) ಅನ್ನು ಬಳಸುತ್ತೇವೆ.
ಇದು ರಿಸರ್ವೇಶನ್ ವ್ಯವಸ್ಥೆಯಂತೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ಆ್ಯಪ್ ಒಂದು ರಹಸ್ಯ ಕೋಡ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ (the verifier).
- ಆ್ಯಪ್ ಆ ಕೋಡ್ನ ಹ್ಯಾಶ್ ಮಾಡಿದ ಆವೃತ್ತಿಯನ್ನು (the challenge) Google ಗೆ ಕಳುಹಿಸುತ್ತದೆ.
- ಆ್ಯಪ್ ಟೋಕನ್ ಕೇಳಿದಾಗ, ಅದು ಮೂಲ ರಹಸ್ಯ ಕೋಡ್ ಅನ್ನು ಕಳುಹಿಸುತ್ತದೆ.
- Google ಆ ಕೋಡ್ ಚಾಲೆಂಜ್ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ.
ಅವು ಹೊಂದಿಕೆಯಾದರೆ, ಅದು ಅದೇ ಆ್ಯಪ್ ಎಂದು Google ಗೆ ತಿಳಿಯುತ್ತದೆ. ಅವು ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ, Google ವಿನಂತಿಯನ್ನು ತಡೆಯುತ್ತದೆ. ಇದು ಹ್ಯಾಕರ್ಗಳು ನಿಮ್ಮ ಅಧಿಕಾರೀಕರಣ ಕೋಡ್ ಅನ್ನು (authorization code) ಕದಿಯದಂತೆ ತಡೆಯುತ್ತದೆ.
OAuth ನ ರೋಡ್ಮ್ಯಾಪ್
- 2007 (OAuth 1.0): ತುಂಬಾ ಸಂಕೀರ್ಣವಾಗಿತ್ತು ಮತ್ತು ಹೆಚ್ಚಿನ ಗಣಿತವನ್ನು ಬಳಸುತ್ತಿತ್ತು.
- 2012 (OAuth 2.0): ವೇಗವಾಗಿ ಮತ್ತು ಸುಲಭವಾಗಿತ್ತು. ಇದು ಟೋಕನ್ಗಳನ್ನು ಬಳಸುತ್ತಿತ್ತು ಮತ್ತು HTTPS ಅಗತ್ಯವಿತ್ತು.
- 2016 (OAuth 2.0 + PKCE): ಮೊಬೈಲ್ ಮತ್ತು ಆಧುನಿಕ ವೆಬ್ ಆ್ಯಪ್ಗಳಿಗಾಗಿ ಸುರಕ್ಷತೆಯನ್ನು ಸೇರಿಸಿತು.
- 2023 (OAuth 2.1): ಹೊಸ ಗೋಲ್ಡ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್. ಇದು ಹಳೆಯ, ಅಸುರಕ್ಷಿತ ವಿಧಾನಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.
ಮುಖ್ಯ ಪಾಠ: ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಎಂದಿಗೂ ಇನ್ನೊಂದು ಆ್ಯಪ್ಗೆ ನೀಡಬೇಡಿ. ಅವರಿಗೊಂದು ಅವಧಿ ಮುಗಿಯುವ ಸೀಮಿತ ಟಿಕೆಟ್ ನೀಡಿ. ನೀವು ನಿಯಂತ್ರಣದಲ್ಲಿ ಇರುತ್ತೀರಿ.
Source: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4
