JSON Web Token ಎಂದರೇನು?
ಒಂದು JSON Web Token (JWT) ಒಂದು ಸಂಕ್ಷಿಪ್ತ, URL-ಸುರಕ್ಷಿತ ಕಟ್ಟು ಆಗಿದ್ದು ಒಂದು ಸಣ್ಣ ಹಕ್ಕು ಮೊತ್ತಕ್ಕಾಗಿ ಬಳಸಲ್ಪಡುತ್ತದೆ. ಇದು ಸ್ಥಿತಿ-ರಹಿತ ಜಾಲ ಅಧಿವೇಶನಗಳು, OAuth/OIDC ಗುರುತು ಟೋಕನ್ಗಳು, ಯಂತ್ರ-ಯಂತ್ರ API ದೃಢೀಕರಣ ಮತ್ತು ಸಹಿ ಮಾಡಿದ ಮ್ಯಾಜಿಕ್ ಕೊಂಡಿಗಳಿಗಾಗಿ ಪ್ರಮಾಣಿತ ಪ್ರಮಾಣ-ಪತ್ರ ಸ್ವರೂಪ ಆಗಿದೆ. JWT ಯಾವಾಗಲೂ ಚುಕ್ಕಿಗಳಿಂದ ಜೋಡಿಸಿದ ಮೂರು base64url ವಿಭಾಗಗಳಾಗಿರುತ್ತದೆ: header.payload.signature. ಶಿರೋಟಿಕೆ ಮತ್ತು ಮೊತ್ತ JSON ಆಗಿರುತ್ತದೆ; ಸಹಿ ಮೊದಲ ಎರಡು ವಿಭಾಗಗಳ ಮೇಲೆ ಒಂದು ದ್ವಿಮಾನ MAC ಅಥವಾ ಡಿಜಿಟಲ್ ಸಹಿ ಆಗಿರುತ್ತದೆ.
JWTs ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ?
ಈ ಉಪಕರಣ ಟೋಕನ್ ಡಿಕೋಡ್ ಮಾಡಿದಾಗ ಪ್ರತಿ JWT ಗ್ರಂಥಾಲಯ ಅನುಸರಿಸುವ ಅದೇ ಮೂರು-ಹಂತದ ಮಾರ್ಗ ನಡೆಯುತ್ತದೆ:
- ಟೋಕನ್ ಅನ್ನು ಚುಕ್ಕಿಗಳ ಮೇಲೆ ನಿಖರ ಮೂರು ಖಾಲಿ-ರಹಿತ ವಿಭಾಗಗಳಾಗಿ ವಿಭಜಿಸಿ. ಬೇರೆ ಯಾವ ಆಕಾರ ಕೂಡ ಅಸ್ತವ್ಯಸ್ತ ಎಂದು ಪರಿಗಣಿಸಲ್ಪಡುತ್ತದೆ.
- ವಿಭಾಗ 0 ಮತ್ತು 1 ಅನ್ನು Base64url-ಡಿಕೋಡ್ ಮಾಡಿ, ನಂತರ ಪ್ರತಿಯನ್ನು
JSON.parseಮಾಡಿ. ಶಿರೋಟಿಕೆ ಅಲ್ಗಾರಿದಮ್ (alg) ಮತ್ತು ಟೋಕನ್ ಮಾದರಿ (typ) ಒಯ್ಯುತ್ತದೆ. ಮೊತ್ತ ಹಕ್ಕುಗಳನ್ನು (sub,exp,iat, ಕಸ್ಟಮ್ ಕೀಗಳು) ಒಯ್ಯುತ್ತದೆ. - ರಹಸ್ಯ ಕೊಟ್ಟಿದ್ದರೆ, ಶಿರೋಟಿಕೆಯಲ್ಲಿರುವ ಅಲ್ಗಾರಿದಮ್ ಬಳಸಿ
<segment0>.<segment1>ಮೇಲೆ MAC ಮರುಲೆಕ್ಕ ಮಾಡಿ. ಬೈಟ್ಗಳನ್ನು ಮೂರನೇ ವಿಭಾಗಕ್ಕೆ ಹೋಲಿಸಿ. - ಡಿಕೋಡ್ ಮಾಡಿದ ಹಕ್ಕುಗಳ ಜೊತೆ ಪರಿಶೀಲನ ಫಲಿತಾಂಶ ತೋರಿಸಿ,
expಹಕ್ಕಿನಿಂದ ಲೆಕ್ಕಿಸಿದ ಮಾನವ-ಓದಬಲ್ಲ ಅವಧಿ ಮೀರುವ ಸೂಚಕ ಸೇರಿಸಿ.
ಬ್ರೌಸರ್ನಲ್ಲಿ JWTs decode ಮಾಡುವ ಕಾರಣ?
ದೂರಸ್ಥ ದೋಷ ಹುಡುಕುವ ಉಪಕರಣಕ್ಕೆ ನಿಜ, ಬಳಕೆಯಲ್ಲಿರುವ JWT ಅಂಟಿಸುವುದರಿಂದ ಆ ಸೇವೆಯ ದಾಖಲೆಗಳು, ಗಮನಿಸುವ ಸ್ಟ್ಯಾಕ್ ಮತ್ತು ಸೇವೆ ಮಾಹಿತಿ ಕಳಿಸುವ ಯಾವ ಪಾಲುದಾರಕ್ಕೂ ಪ್ರಮಾಣ-ಪತ್ರ ಸೋರಿಕೆ ಆಗುತ್ತದೆ. ತೃತೀಯ-ಪಕ್ಷ ತಾಣ ಟೋಕನ್ಗಳನ್ನು ದಾಖಲಿಸುವುದಿಲ್ಲ ಎಂದು ಹೇಳಿದಾಗಲೂ ನೀವು ಅದನ್ನು ಪರಿಶೀಲಿಸಲಾಗುವುದಿಲ್ಲ. ಈ ಉಪಕರಣ ನೀವು ಎಂದಿಗೂ ಆ ರಾಜಿ ಮಾಡಿಕೊಳ್ಳಬೇಕಾಗದಂತೆ ನಿರ್ಮಿಸಲ್ಪಟ್ಟಿದೆ:
- ಶೂನ್ಯ network: runtime ಗೆ
fetch,XMLHttpRequest, ಅಥವಾsendBeaconcalls ಇಲ್ಲ. Decode ಮತ್ತು verify ಮಾಡುತ್ತಿರುವಾಗ DevTools ತೆರೆಯಿರಿ — Network panel ಮೌನವಾಗಿ ಉಳಿಯುತ್ತದೆ. - Native Web Crypto: HMAC verification
crypto.subtle.importKeyಮತ್ತುcrypto.subtle.signಬಳಸುತ್ತದೆ, ನಿಮ್ಮ runtime call ಮಾಡುವ ಅದೇ primitives. - Static deploy: ಪ್ರತಿ page ಒಂದೇ static HTML file ಆಗಿದ್ದು server endpoint ಇಲ್ಲ. Leak ಮಾಡಲು server ಇಲ್ಲವಾದ್ದರಿಂದ leak ಮಾಡಲು token ಇಲ್ಲ.
ಈ ಟೂಲ್ ಏನನ್ನು verify ಮಾಡುತ್ತದೆ, ಮತ್ತು ಏನನ್ನು ಮಾಡುವುದಿಲ್ಲ?
ಈ ಉಪಕರಣದ ಆವೃತ್ತಿ 1 ಕೇವಲ HMAC-SHA ಕುಟುಂಬದ ಸಹಿಗಳನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ನಿರ್ದಿಷ್ಟವಾಗಿ:
- Support ಮಾಡಲ್ಪಟ್ಟಿದೆ: HS256, HS384, HS512. Shared secret ಕೊಟ್ಟರೆ ಟೂಲ್ MAC recompute ಮಾಡಿ compare ಮಾಡುತ್ತದೆ.
- ಇನ್ನೂ support ಮಾಡಲ್ಪಟ್ಟಿಲ್ಲ: RS256/384/512 (RSA), ES256/384/512 (ECDSA), EdDSA, ಮತ್ತು PS256/384/512 (RSA-PSS). ಇವು PEM ಅಥವಾ JWK ರೂಪದ public key ಅಗತ್ಯಪಡಿಸುತ್ತವೆ ಮತ್ತು follow-up release ಗೆ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಮುಂದೂಡಲ್ಪಟ್ಟಿವೆ.
- Refused:
alg: "none". ಟೂಲ್ token decode ಮಾಡುತ್ತದೆ ಆದರೆ ಸ್ಪಷ್ಟವಾಗಿ insecure ಎಂದು flag ಮಾಡುತ್ತದೆ — signature validation ನಡೆಯುತ್ತಿಲ್ಲ, ಮತ್ತು ಅಂತಹ token ಒಪ್ಪಿಕೊಳ್ಳುವ ಯಾವ production system ಗೆ serious vulnerability ಇದೆ.
JWT decoding ಉದಾಹರಣೆ ಹೇಗೆ ಕಾಣುತ್ತದೆ?
ಮೇಲಿನ ಇನ್ಪುಟ್ ಕ್ಷೇತ್ರಕ್ಕೆ ಪ್ರಮಾಣಿತ RFC 7519 ಉದಾಹರಣ ಟೋಕನ್ ಅಂಟಿಸಿ:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Header {"alg":"HS256","typ":"JWT"} ಗೆ decode ಆಗುತ್ತದೆ ಮತ್ತು payload {"sub":"1234567890","name":"John Doe","iat":1516239022} ಗೆ. Verify panel ನಲ್ಲಿ your-256-bit-secret ನಮೂದಿಸಿ ಮತ್ತು signature check valid ಮರಳಿಸುತ್ತದೆ. Secret ನ ಒಂದು ಅಕ್ಷರ ಬದಲಿಸಿ ಮತ್ತು invalid ಮರಳಿಸುತ್ತದೆ. ಇದ್ಯಾವುದೂ ನಿಮ್ಮ ಬ್ರೌಸರ್ ಬಿಡುವುದಿಲ್ಲ.
ಉತ್ಪಾದನೆಯಲ್ಲಿ ಟೋಕನ್ ದೋಷ ಹುಡುಕಬೇಕಾಗಿದ್ದಾಗ ನಾವು ಬಯಸಿದ JWT ಡಿಕೋಡರ್ ಇದು: ಗೌಪ್ಯತೆ-ಗೌರವಿಸುವ, ವೇಗದ, ಮತ್ತು ರನ್ಟೈಮ್ ಬಳಸುವ ಅದೇ ಮೂಲ ಘಟಕಗಳ ಮೇಲೆ ನಿರ್ಮಿಸಲ್ಪಟ್ಟ.