FastAPI ਵਿੱਚ JWT Authentication
Authentication ਪੁੱਛਦਾ ਹੈ "ਤੁਸੀਂ ਕੌਣ ਹੋ?" Authorization ਪੁੱਛਦਾ ਹੈ "ਤੁਸੀਂ ਕੀ ਕਰ ਸਕਦੇ ਹੋ?"
ਜੇਕਰ ਤੁਸੀਂ ਸੁਰੱਖਿਆ ਤੋਂ ਬਿਨਾਂ ਕੋਈ AI ਪਲੇਟਫਾਰਮ ਬਣਾਉਂਦੇ ਹੋ, ਤਾਂ ਕੋਈ ਵੀ ਨਿੱਜੀ ਡੇਟਾ ਤੱਕ ਪਹੁੰਚ ਸਕਦਾ ਹੈ। ਉਹ ਯੂਜ਼ਰ ਪ੍ਰੋਫਾਈਲਾਂ ਨੂੰ ਬਦਲ ਸਕਦੇ ਹਨ ਜਾਂ ਵਿਦਿਆਰਥੀਆਂ ਦੀ ਪ੍ਰਗਤੀ ਦੇਖ ਸਕਦੇ ਹਨ। ਤੁਹਾਨੂੰ ਆਪਣੇ ਸਰੋਤਾਂ ਦੀ ਰੱਖਿਆ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।
JWT (JSON Web Token) ਇਸਦਾ ਹੱਲ ਕਰਦਾ ਹੈ। ਹਰ ਰਿਕਵੈਸਟ ਦੇ ਨਾਲ ਪਾਸਵਰਡ ਭੇਜਣ ਦੀ ਬਜਾਏ, ਯੂਜ਼ਰ ਇੱਕ ਸੁਰੱਖਿਅਤ ਟੋਕਨ ਭੇਜਦਾ ਹੈ।
ਵਰਕਫਲੋ (Workflow):
- ਯੂਜ਼ਰ ਨੂੰ ਰਜਿਸਟਰ ਕਰੋ
- ਪਾਸਵਰਡ ਨੂੰ ਹੈਸ਼ ਕਰੋ
- ਲੌਗਇਨ ਅਤੇ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲਜ਼ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ
- JWT ਟੋਕਨ ਜਨਰੇਟ ਕਰੋ
- ਸੁਰੱਖਿਅਤ ਰੂਟਸ (protected routes) ਤੱਕ ਪਹੁੰਚ ਕਰੋ
ਤੁਹਾਨੂੰ ਇਹਨਾਂ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ:
- ਪਾਸਵਰਡ ਹੈਸ਼ਿੰਗ ਲਈ bcrypt ਦੇ ਨਾਲ passlib
- ਟੋਕਨ ਜਨਰੇਸ਼ਨ ਲਈ python-jose
ਪਾਸਵਰਡ ਨੂੰ ਕਦੇ ਵੀ ਪਲੇਨ ਟੈਕਸਟ (plain text) ਵਿੱਚ ਸਟੋਰ ਨਾ ਕਰੋ। ਜੇਕਰ ਕੋਈ ਹੈਕਰ ਤੁਹਾਡਾ ਡੇਟਾਬੇਸ ਚੋਰੀ ਕਰ ਲੈਂਦਾ ਹੈ, ਤਾਂ ਉਸਨੂੰ ਸਭ ਕੁਝ ਮਿਲ ਜਾਵੇਗਾ। ਇਸਦੀ ਬਜਾਏ, ਇੱਕ ਹੈਸ਼ ਸਟੋਰ ਕਰੋ।
ਇੱਕ ਹੈਸ਼ "password123" ਨੂੰ ਰੈਂਡਮ ਅੱਖਰਾਂ ਦੀ ਇੱਕ ਲੰਬੀ ਲੜੀ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਤੁਸੀਂ ਹੈਸ਼ ਨੂੰ ਵਾਪਸ ਪਾਸਵਰਡ ਵਿੱਚ ਨਹੀਂ ਬਦਲ ਸਕਦੇ। ਤੁਸੀਂ ਸਿਰਫ਼ ਇਹ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹੋ ਕਿ ਇਨਪੁਟ ਹੈਸ਼ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ ਜਾਂ ਨਹੀਂ।
ਇਸਨੂੰ ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ:
ਰਜਿਸਟ੍ਰੇਸ਼ਨ (Registration) ਯੂਜ਼ਰ ਇੱਕ ਯੂਜ਼ਰਨੇਮ ਅਤੇ ਪਾਸਵਰਡ ਭੇਜਦਾ ਹੈ। ਤੁਸੀਂ ਪਾਸਵਰਡ ਨੂੰ ਹੈਸ਼ ਕਰਦੇ ਹੋ ਅਤੇ ਇਸਨੂੰ ਆਪਣੇ ਡੇਟਾਬੇਸ ਵਿੱਚ ਸਟੋਰ ਕਰਦੇ ਹੋ।
ਲੌਗਇਨ (Login) ਯੂਜ਼ਰ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲਜ਼ ਭ