𝗙𝗮𝘀𝘁𝗔𝗣𝗜 ನಲ್ಲಿ 𝗝𝗪𝗧 𝗔𝘂𝘁𝗵𝗲𝗻𝘁𝗶𝗰𝗮𝘁𝗶𝗼𝗻
Authentication ಎಂಬುದು "ನೀವು ಯಾರು?" ಎಂದು ಕೇಳುತ್ತದೆ. Authorization ಎಂಬುದು "ನೀವು ಏನು ಮಾಡಬಹುದು?" ಎಂದು ಕೇಳುತ್ತದೆ.
ನೀವು ಭದ್ರತೆಯಿಲ್ಲದೆ AI ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ನಿರ್ಮಿಸಿದರೆ, ಯಾರೇ ಆದರೂ ಖಾಸಗಿ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. ಅವರು ಬಳಕೆದಾರರ ಪ್ರೊಫೈಲ್ಗಳನ್ನು ಬದಲಾಯಿಸಬಹುದು ಅಥವಾ ವಿದ್ಯಾರ್ಥಿಗಳ ಪ್ರಗತಿಯನ್ನು ನೋಡಬಹುದು. ನೀವು ನಿಮ್ಮ ಸಂಪನ್ಮೂಲಗಳನ್ನು (resources) ರಕ್ಷಿಸಬೇಕು.
JWT (JSON Web Token) ಇದನ್ನು ಪರಿಹರಿಸುತ್ತದೆ. ಪ್ರತಿ ವಿನಂತಿಯೊಂದಿಗೆ (request) ಪಾಸ್ವರ್ಡ್ ಕಳುಹಿಸುವ ಬದಲಿಗೆ, ಬಳಕೆದಾರರು ಸುರಕ್ಷಿತ ಟೋಕನ್ ಅನ್ನು ಕಳುಹಿಸುತ್ತಾರೆ.
ಕಾರ್ಯವಿಧಾನ (Workflow):
- ಬಳಕೆದಾರರನ್ನು ನೋಂದಾಯಿಸಿ (Register user)
- ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಹ್ಯಾಶ್ (Hash) ಮಾಡಿ
- ಲಾಗಿನ್ ಆಗಿ ಮತ್ತು ದೃಢೀಕರಿಸಿ (Verify credentials)
- JWT ಟೋಕನ್ ಅನ್ನು ರಚಿಸಿ
- ರಕ್ಷಿತ ಮಾರ್ಗಗಳನ್ನು (Protected routes) ಪ್ರವೇಶಿಸಿ
ನೀವು ಈ ಪರಿಕರಗಳನ್ನು ಬಳಸಬೇಕು:
- ಪಾಸ್ವರ್ಡ್ ಹ್ಯಾಶಿಂಗ್ಗಾಗಿ bcrypt ನೊಂದಿಗೆ passlib
- ಟೋಕನ್ ರಚನೆಗಾಗಿ python-jose
ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಎಂದಿಗೂ ಪ್ಲೇನ್ ಟೆಕ್ಸ್ಟ್ (plain text) ರೂಪದಲ್ಲಿ ಸಂಗ್ರಹಿಸಬೇಡಿ. ಹ್ಯಾಕರ್ ನಿಮ್ಮ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಕದಿಯುವಲ್ಲಿ ಯಶಸ್ವಿಯಾದರೆ, ಅವರಿಗೆ ಎಲ್ಲವೂ ಸಿಗುತ್ತದೆ. ಬದಲಿಗೆ, ಹ್ಯಾಶ್ (hash) ಅನ್ನು ಸಂಗ್ರಹಿಸಿ.
ಹ್ಯಾಶ್ ಎಂಬುದು "password123" ಅನ್ನು ಉದ್ದವಾದ ಯಾದೃಚ್ಛಿಕ ಅಕ್ಷರಗಳ ಸರಪಳಿಯನ್ನಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ. ನೀವು ಹ್ಯಾಶ್ ಅನ್ನು ಮತ್ತೆ ಪಾಸ್ವರ್ಡ್ ಆಗಿ ಪರಿವರ್ತಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ನೀವು ಕೇವಲ ಇನ್ಪುಟ್ ಹ್ಯಾಶ್ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತೀರಿ.
ಇದನ್ನು ನಿರ್ಮಿಸುವುದು ಹೇಗೆ:
ನೋಂದಣಿ (Registration) ಬಳಕೆದಾರರು ಬಳಕೆದಾರರ ಹೆಸರು (username) ಮತ್ತು ಪಾಸ್ವರ್ಡ್ ಕಳುಹಿಸುತ್ತಾರೆ. ನೀವು ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಹ್ಯಾಶ್ ಮಾಡಿ ಅದನ್ನು ನಿಮ್ಮ ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸುತ್ತೀರಿ.
ಲಾಗಿನ್ (Login) ಬಳಕೆದಾರರು ದೃಢೀಕರಣ ಮಾಹಿತಿಗಳನ್ನು (credentials) ಕಳುಹಿಸುತ್ತಾರೆ. ನೀವು ಸಂಗ್ರಹಿಸಲಾದ ಹ್ಯಾಶ್ ಅನ್ನು ಹುಡುಕುತ್ತೀರಿ. ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ನೀವು ಲೈಬ್ರರಿಯನ್ನು ಬಳಸುತ್ತೀರಿ. ಅದು ಹೊಂದಿಕೆಯಾದರೆ, ನೀವು ಟೋಕನ್ ಅನ್ನು ರಚಿಸುತ್ತೀರಿ.
JWT ರಚನೆ (JWT Generation) ಟೋಕನ್ ಬಳಕೆದಾರರ ಡೇಟಾ ಮತ್ತು ಅವಧಿ ಮುಕ್ತಾಯದ ಸಮಯವನ್ನು (expiry time) ಒಳಗೊಂಡಿರುತ್ತದೆ. ನೀವು ರಹಸ್ಯ ಕೀ (secret key) ಬಳಸಿ ಟೋಕನ್ ಅನ್ನು ಸಹಿ (sign) ಮಾಡುತ್ತೀರಿ. ಬಳಕೆದಾರರು ಡೇಟಾವನ್ನು ಬದಲಾಯಿಸಲು ಪ್ರಯತ್ನಿಸಿದರೆ, ಸಹಿ (signature) ವಿಫಲವಾಗುತ್ತದೆ.
ಲಾಗಿನ್ ಪ್ರತಿಕ್ರಿಯೆ (response) ಈ ರೀತಿ ಇರುತ್ತದೆ: { "access_token": "eyJhbGciOiJIUzI1Ni...", "token_type": "bearer" }
ಈಗ ಬಳಕೆದಾರರು ನಿಮ್ಮ ಸಿಸ್ಟಮ್ನ ಕೀ (key) ಅನ್ನು ಹೊಂದಿದ್ದಾರೆ.
ಮುಂದಿನ ಭಾಗದಲ್ಲಿ, ನಿರ್ದಿಷ್ಟ ಮಾರ್ಗಗಳನ್ನು (routes) ರಕ್ಷಿಸಲು ಮತ್ತು ಬಳಕೆದಾರರ ಪಾತ್ರಗಳನ್ನು (user roles) ನಿರ್ವಹಿಸಲು ಈ ಟೋಕನ್ಗಳನ್ನು ಹೇಗೆ ಬಳಸಬೇಕೆಂದು ನಾವು ಕಲಿಯುತ್ತೇವೆ.
ಹಂತಗಳ ಸಾರಾಂಶ:
- ಬಳಕೆದಾರರನ್ನು ನೋಂದಾಯಿಸಿ
- ಪಾಸ್ವರ್ಡ್ ಹ್ಯಾಶ್ ಮಾಡಿ ಮತ್ತು ಸಂಗ್ರಹಿಸಿ
- ಲಾಗಿನ್ ಸಮಯದಲ್ಲಿ ಪಾಸ್ವರ್ಡ್ ಪರಿಶೀಲಿಸಿ
- ಸಹಿ ಮಾಡಿದ JWT ಅನ್ನು ರಚಿಸಿ
Source: https://dev.to/zeroshotanu/fastapi-for-ai-engineers-part-6-jwt-authentication-in-fastapi-5fpk
Optional learning community: https://t.me/GyaanSetuAi