JSON Web Token (JWT) ਦੀ ਬਣਤਰ ਅਤੇ ਕੰਮ ਕਰਨ ਦਾ ਤਰੀਕਾ
JSON Web Token (JWT) ਇੱਕ ਸੰਖੇਪ ਅਤੇ ਸਵੈ-ਨਿਰਭਰ ਤਰੀਕਾ ਹੈ ਜਿਸ ਰਾਹੀਂ ਦੋ ਧਿਰਾਂ ਵਿਚਕਾਰ ਜਾਣਕਾਰੀ ਨੂੰ JSON ਆਬਜੈਕਟ ਵਜੋਂ ਸੁਰੱਖਿਅਤ ਰੂਪ ਵਿੱਚ ਟ੍ਰਾਂਸਫਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਮਿਆਰੀ JWT ਮੁੱਖ ਤੌਰ 'ਤੇ ਤਿੰਨ ਭਾਗਾਂ ਵਿੱਚ ਵੰਡਿਆ ਹੁੰਦਾ ਹੈ, ਜੋ ਇੱਕ ਦੂਜੇ ਤੋਂ ਬਿੰਦੂ (.) ਰਾਹੀਂ ਵੱਖ ਕੀਤੇ ਹੁੰਦੇ ਹਨ:
- ਹੈਡਰ: ਇਸ ਵਿੱਚ ਟੋਕਨ ਦੀ ਕਿਸਮ ਅਤੇ ਵਰਤੇ ਗਏ ਹਸਤਾਖਰ ਐਲਗੋਰਿਦਮ ਬਾਰੇ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ।
- ਪੇਲੋਡ: ਇਸ ਵਿੱਚ ਅਸਲ ਡੇਟਾ ਜਾਂ ਦਾਅਵੇ (claims) ਹੁੰਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਉਪਭੋਗਤਾ ਦੀ ਪਛਾਣ ਅਤੇ ਟੋਕਨ ਦੀ ਮਿਆਦ।
- ਦਸਤਖਤ (Signature): ਇਹ ਭਾਗ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਕਿ ਟੋਕਨ ਰਸਤੇ ਵਿੱਚ ਬਦਲਿਆ ਨਹੀਂ ਗਿਆ ਹੈ।
ਇਹਨਾਂ ਤਿੰਨਾਂ ਭਾਗਾਂ ਨੂੰ Base64URL ਫਾਰਮੈਟ ਵਿੱਚ ਇਨਕੋਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਜੋ ਇਹਨਾਂ ਨੂੰ HTTP ਵਾਤਾਵਰਣ ਵਿੱਚ ਆਸਾਨੀ ਨਾਲ ਭੇਜਿਆ ਜਾ ਸਕੇ। "JWT ਡੀਕੋਡਰ" ਟੂਲ ਇਹਨਾਂ ਇਨਕੋਡ ਕੀਤੇ ਭਾਗਾਂ ਨੂੰ ਵਾਪਸ ਪੜ੍ਹਨਯੋਗ JSON ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲਦਾ ਹੈ।
JWT ਹੈਡਰ ਅਤੇ ਪੇਲੋਡ ਦੇ ਮੁੱਖ ਕਲੇਮ
ਟੋਕਨ ਦੇ ਪਹਿਲੇ ਦੋ ਭਾਗਾਂ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਤਕਨੀਕੀ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ:
ਹੈਡਰ
ਹੈਡਰ ਆਮ ਤੌਰ 'ਤੇ ਦੋ ਮੁੱਖ ਜਾਣਕਾਰੀਆਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ:
alg: ਹਸਤਾਖਰ ਕਰਨ ਲਈ ਵਰਤਿਆ ਗਿਆ ਐਲਗੋਰਿਦਮ (ਜਿਵੇਂ ਕਿ HS256 ਜਾਂ RS256)।typ: ਟੋਕਨ ਦੀ ਕਿਸਮ, ਜੋ ਕਿ ਆਮ ਤੌਰ 'ਤੇ JWT ਹੁੰਦੀ ਹੈ।
ਪੇਲੋਡ
ਪੇਲੋਡ ਵਿੱਚ ਐਪਲੀਕੇਸ਼ਨ ਨਾਲ ਸਬੰਧਤ ਦਾਅਵੇ (claims) ਹੁੰਦੇ ਹਨ। ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੁਝ ਮਿਆਰੀ ਸਮਾਂ-ਅਧਾਰਿਤ ਦਾਅਵੇ ਹੇਠ ਲਿਖੇ ਅਨੁਸਾਰ ਹਨ:
iat(Issued At): ਇਹ ਦੱਸਦਾ ਹੈ ਕਿ ਟੋਕਨ ਕਿਸ ਸਮੇਂ ਜਾਰੀ ਕੀਤਾ ਗਿਆ ਸੀ।exp(Expiration Time): ਇਹ ਉਹ ਸਮਾਂ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਜਿਸ ਤੋਂ ਬਾਅਦ ਟੋਕਨ ਨੂੰ ਅਵੈਧ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।
ਡੀਕੋਡਿੰਗ ਅਤੇ ਵੈਰੀਫਿਕੇਸ਼ਨ ਵਿਚਕਾਰ ਅੰਤਰ
ਇੱਕ JWT ਨੂੰ ਡੀਕੋਡ ਕਰਨ ਅਤੇ ਉਸਦੀ ਪੁਸ਼ਟੀ (verify) ਕਰਨ ਵਿੱਚ ਬਹੁਤ ਵੱਡਾ ਅੰਤਰ ਹੈ:
- ਡੀਕੋਡਿੰਗ (Decoding): ਇਸ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਸਿਰਫ਼ Base64URL ਇਨਕੋਡ ਕੀਤੇ ਟੈਕਸਟ ਨੂੰ ਮਨੁੱਖੀ ਪੜ੍ਹਨਯੋਗ JSON ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ। ਇਸਦੇ ਲਈ ਕਿਸੇ ਗੁਪਤ ਕੁੰਜੀ (secret key) ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ। ਕੋਈ ਵੀ ਵਿਅਕਤੀ ਜਿਸ ਕੋਲ ਟੋਕਨ ਹੈ, ਉਹ ਇਸਦੇ ਅੰਦਰਲੇ ਡੇਟਾ ਨੂੰ ਦੇਖਣ ਲਈ ਇਸਨੂੰ ਡੀਕੋਡ ਕਰ ਸਕਦਾ ਹੈ।
- ਵੈਰੀਫਿਕੇਸ਼ਨ (Verification): ਇਸ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਟੋਕਨ ਦੇ ਦਸਤਖਤ (signature) ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਤਾਂ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾ ਸਕੇ ਕਿ ਟੋਕਨ ਭਰੋਸੇਯੋਗ ਸਰੋਤ ਦੁਆਰਾ ਜਾਰੀ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਸ ਨਾਲ ਕੋਈ ਛੇੜਛਾੜ ਨਹੀਂ ਹੋਈ ਹੈ। ਇਸਦੇ ਲਈ ਸਾਈਨਿੰਗ ਸੀਕਰੇਟ ਜਾਂ ਪਬਲਿਕ ਕੀਅ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਇਹ ਟੂਲ ਸਿਰਫ਼ ਡੀਕੋਡਿੰਗ ਦਾ ਕੰਮ ਕਰਦਾ ਹੈ। ਇਹ ਦਸਤਖਤ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕਰਦਾ ਅਤੇ ਨਾ ਹੀ ਸਾਈਨਿੰਗ ਸੀਕਰੇਟ ਜਾਂ ਪਬਲਿਕ ਕੀਅ ਦੀ ਮੰਗ ਕਰਦਾ ਹੈ। ਸੁਰੱਖਿਆ ਦੇ ਲਿਹਾਜ਼ ਨਾਲ, ਬਿਨਾਂ ਵੈਰੀਫਿਕੇਸ਼ਨ ਦੇ ਕਿਸੇ ਵੀ ਟੋਕਨ ਦੇ ਡੇਟਾ 'ਤੇ ਉਤਪਾਦਨ (production) ਵਾਤਾਵਰਣ ਵਿੱਚ ਭਰੋਸਾ ਨਹੀਂ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ।
ਟੂਲ ਦੇ ਨਿਯਮ ਅਤੇ ਗਲਤੀਆਂ ਦੇ ਸੁਨੇਹੇ
"JWT ਡੀਕੋਡਰ" ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ, ਇਨਪੁਟ ਦੀ ਸਥਿਤੀ ਦੇ ਅਧਾਰ 'ਤੇ ਹੇਠ ਲਿਖੇ ਨਿਯਮ ਅਤੇ ਸੁਨੇਹੇ ਲਾਗੂ ਹੁੰਦੇ ਹਨ:
- ਖਾਲੀ ਇਨਪੁਟ: ਜਦੋਂ ਟੈਕਸਟ ਫੀਲਡ ਖਾਲੀ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਟੂਲ "ਤਿਆਰ ਹੈ। ਡੀਕੋਡ ਕਰਨ ਲਈ ਇੱਕ JWT ਪੇਸਟ ਕਰੋ।" ਸਥਿਤੀ ਵਿੱਚ ਰਹਿੰਦਾ ਹੈ।
- ਅਵੈਧ ਫਾਰਮੈਟ: ਜੇਕਰ ਪੇਸਟ ਕੀਤਾ ਗਿਆ ਟੈਕਸਟ ਤਿੰਨ ਭਾਗਾਂ ਵਿੱਚ ਵੰਡਿਆ ਨਹੀਂ ਹੈ, ਤਾਂ ਟੂਲ "ਵੈਧ JWT ਨਹੀਂ ਹੈ — ਤਿੰਨ ਬਿੰਦੂ-ਵੱਖਰੇ ਭਾਗਾਂ ਦੀ ਉਮੀਦ ਸੀ।" ਸੁਨੇਹਾ ਦਿਖਾਉਂਦਾ ਹੈ।
- ਅਵੈਧ Base64URL: ਜੇਕਰ ਹੈਡਰ ਜਾਂ ਪੇਲੋਡ ਨੂੰ ਡੀਕੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਤਾਂ ਕ੍ਰਮਵਾਰ "ਹੈਡਰ ਨੂੰ ਡੀਕੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ — ਅਵੈਧ Base64URL।" ਜਾਂ "ਪੇਲੋਡ ਨੂੰ ਡੀਕੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ — ਅਵੈਧ Base64URL।" ਦੀ ਗਲਤੀ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ।
- ਅਵੈਧ JSON: ਜੇਕਰ ਡੀਕੋਡ ਕੀਤਾ ਗਿਆ ਹਿੱਸਾ ਸਹੀ JSON ਫਾਰਮੈਟ ਵਿੱਚ ਨਹੀਂ ਹੈ, ਤਾਂ ਟੂਲ "ਹੈਡਰ ਵੈਧ JSON ਨਹੀਂ ਹੈ।" ਜਾਂ "ਪੇਲੋਡ ਵੈਧ JSON ਨਹੀਂ ਹੈ।" ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦਾ ਹੈ।
- ਬਹੁਤ ਲੰਬਾ ਟੋਕਨ: ਜੇਕਰ ਇਨਪੁਟ ਦੀ ਲੰਬਾਈ ਬਹੁਤ ਜ਼ਿਆਦਾ ਹੈ, ਤਾਂ ਟੂਲ "ਇਹ ਇੱਕ ਅਸਲੀ JWT ਹੋਣ ਲਈ ਬਹੁਤ ਲੰਬਾ ਹੈ।" ਸੁਨੇਹਾ ਦਿੰਦਾ ਹੈ।
- ਸਾਫ਼ ਕਰਨਾ: ਜਦੋਂ ਇਨਪੁਟ ਨੂੰ ਸਾਫ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਫੋਕਸ ਵਾਪਸ ਇਨਪੁਟ ਫੀਲਡ 'ਤੇ ਚਲਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਸਕ੍ਰੀਨ 'ਤੇ "ਸਾਫ਼ ਕੀਤਾ ਗਿਆ।" ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ। ਅਵੈਧ ਟੋਕਨ ਹੋਣ ਦੀ ਸਥਿਤੀ ਵਿੱਚ ਡੀਕੋਡ ਕੀਤੇ ਖੇਤਰ ਲੁਕਾ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ।
ਡੇਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਅਤੇ ਨਿੱਜਤਾ
ਤੁਹਾਡੀ ਨਿੱਜਤਾ ਸਾਡੀ ਤਰਜੀਹ ਹੈ। ਤੁਹਾਡਾ ਟੋਕਨ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਡੀਕੋਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। BroBroGo 'ਤੇ ਕੁਝ ਵੀ ਅਪਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ। ਸਾਰੀ ਪ੍ਰਕਿਰਿਆ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਤੁਹਾਡੇ ਆਪਣੇ ਡਿਵਾਈਸ 'ਤੇ ਹੁੰਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਤੁਹਾਡੇ ਸੰਵੇਦਨਸ਼ੀਲ ਟੋਕਨ ਡੇਟਾ ਦੀ ਸੁਰੱਖਿਆ ਬਣੀ ਰਹਿੰਦੀ ਹੈ।
ਅਕਸਰ ਪੁੱਛੇ ਜਾਣ ਵਾਲੇ ਸਵਾਲ (FAQ)
ਕੀ ਇੱਥੇ ਆਪਣਾ JWT ਪੇਸਟ ਕਰਨਾ ਸੁਰੱਖਿਅਤ ਹੈ?
ਹਾਂ। ਡੀਕੋਡਿੰਗ ਪੂਰੀ ਤਰ੍ਹਾਂ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਹੁੰਦੀ ਹੈ — ਤੁਹਾਡਾ ਟੋਕਨ ਕਦੇ ਵੀ BroBroGo ਨੂੰ ਨਹੀਂ ਭੇਜਿਆ ਜਾਂਦਾ।
ਕੀ ਇਹ ਦਸਤਖਤ (signature) ਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ?
ਨਹੀਂ। ਇਹ ਤੁਹਾਡੇ ਪੜ੍ਹਨ ਲਈ ਸਿਰਫ਼ ਹੈਡਰ ਅਤੇ ਪੇਲੋਡ ਨੂੰ ਡੀਕੋਡ ਕਰਦਾ ਹੈ। ਦਸਤਖਤ (signature) ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਸਾਈਨਿੰਗ ਸੀਕਰੇਟ ਜਾਂ ਪਬਲਿਕ ਕੀਅ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਸ ਬਾਰੇ ਇਹ ਟੂਲ ਕਦੇ ਨਹੀਂ ਪੁੱਛਦਾ।
ਮੈਨੂੰ ਕਿਵੇਂ ਪਤਾ ਲੱਗੇਗਾ ਕਿ ਮੇਰੇ ਟੋਕਨ ਦੀ ਮਿਆਦ ਪੁੱਗ ਗਈ ਹੈ?
ਡੀਕੋਡਰ exp ਕਲੇਮ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ ਅਤੇ ਡੀਕੋਡ ਕੀਤੇ ਟੋਕਨ ਦੇ ਅੱਗੇ ਇੱਕ ਸਟੇਟਸ ਬੈਜ ਦਿਖਾਉਂਦਾ ਹੈ — ਵੈਧ, ਮਿਆਦ ਪੁੱਗ ਚੁੱਕੀ, ਅਜੇ ਵੈਧ ਨਹੀਂ, ਜਾਂ ਕੋਈ ਮਿਆਦ ਨਹੀਂ।
ਜੇਕਰ ਟੋਕਨ ਵਿੱਚ ਕੋਈ exp ਕਲੇਮ ਨਾ ਹੋਵੇ ਤਾਂ ਕੀ ਹੁੰਦਾ ਹੈ?
ਜੇਕਰ ਟੋਕਨ ਵਿੱਚ ਕੋਈ ਮਿਆਦ ਪੁੱਗਣ ਦਾ ਦਾਅਵਾ (exp) ਮੌਜੂਦ ਨਹੀਂ ਹੈ, ਤਾਂ ਟੂਲ ਸਟੇਟਸ ਵਜੋਂ "ਕੋਈ ਮਿਆਦ ਨਹੀਂ" ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦਾ ਹੈ।