JWT டிகோடர்
JSON Web Token-ஐ ஒட்டினால், அதன் ஹெடரும் பேலோடும் வடிவமைக்கப்பட்ட JSON ஆகத் தெரியும்; காலாவதி நேரமும் வழங்கப்பட்ட நேரமும் தேதிகளாகக் காட்டப்படும், டோக்கன் தற்போது செல்லுபடியாகுமா என்ற குறிப்பும் இருக்கும். டிகோடிங் முழுவதும் உங்கள் உலாவியிலேயே நடக்கிறது; டோக்கன் நடைமுறையில் உள்ள அணுகல் சான்றாக இருக்கும்போது இது முக்கியம்.
0 எழுத்துகள் · 0 சொற்கள் · 0 வரிகள்
0 எழுத்துகள் · 0 சொற்கள் · 0 வரிகள்
முழுவதும் இந்த உலாவி தாவலிலேயே இயங்குகிறது. உங்கள் உரை பதிவேற்றப்படவோ சேமிக்கப்படவோ மாட்டாது.
பதிவு செய்யப்பட்ட claims
RFC 7519 §4.1-ல் வரையறுக்கப்பட்ட ஏழு claim பெயர்கள். அனைத்தும் விருப்பமானவை; நேரங்கள் 1970-01-01 UTC முதலான விநாடிகள்.
| Claim | பொருள் |
|---|---|
iss | வழங்குநர்: டோக்கனை உருவாக்கி கையொப்பமிட்டவர் |
sub | பொருள்: டோக்கன் குறிக்கும் பயனர் அல்லது அமைப்பு |
aud | பார்வையாளர்: டோக்கன் யாருக்காக உருவாக்கப்பட்டது |
exp | காலாவதி நேரம்: இந்த நேரத்துக்குப் பிறகு டோக்கனை நிராகரிக்கவும் |
nbf | இதற்கு முன் செல்லாது: இந்த நேரத்துக்கு முன் டோக்கனை நிராகரிக்கவும் |
iat | வழங்கிய நேரம்: டோக்கன் உருவாக்கப்பட்ட நேரம் |
jti | JWT ID: தனித்துவ அடையாளம், மீள்பயன்பாட்டைத் தடுக்கப் பயன்படும் |
பொதுவான alg மதிப்புகள்
| alg மதிப்பு | பொருள் |
|---|---|
HS256 | SHA-256 உடன் HMAC; ஒரே பகிர்வு ரகசியம் கையொப்பமிட்டு சரிபார்க்கும் |
RS256 | SHA-256 உடன் RSA PKCS#1 v1.5 கையொப்பம்; தனிப்பட்ட விசை கையொப்பமிடும், பொது விசை சரிபார்க்கும் |
PS256 | SHA-256 உடன் RSA-PSS |
ES256 | SHA-256 உடன் P-256 வளைவில் ECDSA; குறுகிய கையொப்பங்கள் |
EdDSA | Ed25519 அல்லது Ed448 கையொப்பங்கள் |
none | கையொப்பமில்லா டோக்கன்; சர்வர்கள் இதை நிராகரிக்க வேண்டும் |
JSON Web Token-க்குள் என்ன இருக்கிறது
JWT என்பது RFC 7519 (மே 2015) இல் வரையறுக்கப்பட்டது; இதை ஆங்கிலச் சொல் "jot" போல உச்சரிக்கலாம் என்று அது பரிந்துரைக்கிறது. பொதுவான கையொப்பமிட்ட வடிவம், புள்ளிகளால் இணைக்கப்பட்ட மூன்று Base64url சரங்கள்: header.payload.signature. header பகுதி alg இல் HS256 அல்லது RS256 போன்ற கையொப்ப அல்காரிதத்தையும், பெரும்பாலும் kid இல் ஒரு கீ ஐடியையும் குறிப்பிடும். payload பகுதியில் claims இருக்கும்; இவை sub (பயனர்), iss (வழங்குநர்), aud (உத்தேசிக்கப்பட்ட பார்வையாளர்) மற்றும் exp, nbf, iat போன்ற JSON புலங்கள். exp, nbf, iat ஆகியவை 1 ஜனவரி 1970 UTC முதல் கடந்த வினாடிகளில் உள்ள நேரங்கள். டிகோடர் இம்மூன்றையும் உங்கள் உள்ளூர் நேரத்திற்கும் ISO 8601 வடிவத்திற்கும் மாற்றி, டோக்கன் காலாவதியாகிவிட்டதா, இன்னும் செல்லுபடியாகத் தொடங்கவில்லையா, அல்லது செல்லுபடி காலத்துக்குள் உள்ளதா என்பதையும் காட்டும்.
Base64url என்பது என்கோடிங், குறியாக்கம் (encryption) அல்ல. எனவே டோக்கன் கையில் உள்ள எவரும் இந்தப் பக்கம் செய்வது போலவே அதன் payload-ஐப் படிக்கலாம். கடவுச்சொற்கள், கார்டு எண்கள் போன்ற ரகசியங்களை claims-இல் ஒருபோதும் வைக்காதீர்கள். புள்ளிகளால் பிரிக்கப்பட்ட ஐந்து பகுதிகள் கொண்ட டோக்கன் JWE ஆகும், அதாவது குறியாக்கப்பட்ட டோக்கன்; கீ இல்லாமல் அதன் உள்ளடக்கத்தைப் படிக்க முடியாது, டிகோடர் அதைத் தெரிவிக்கும். Authorization header-இலிருந்து நகலெடுத்த தொடக்க "Bearer " தானாக நீக்கப்படும்.
இங்கே கையொப்பம் ஏன் சரிபார்க்கப்படுவதில்லை
header மற்றும் payload-ஐ கீ வைத்திருப்பவர் உருவாக்கினார் என்பதையும், அதன் பின் மாற்றப்படவில்லை என்பதையும் signature நிரூபிக்கிறது. அதைச் சரிபார்க்க அந்த கீ தேவை: HS256 போன்ற HMAC அல்காரிதங்களுக்குப் பகிரப்பட்ட ரகசியம், RS256, ES256 அல்லது EdDSA-க்கு வழங்குநரின் பொது கீ. உற்பத்தி கையொப்ப ரகசியத்தை எந்த இணையப் பக்கத்திலும் ஒட்டுவது நல்லதல்ல; கீ இல்லாமல் டோக்கனை உறுதிப்படுத்துவது போல நடிக்கும் டிகோடர் தவறான நம்பிக்கையைத் தரும். எனவே இந்தக் கருவி signature-ஐக் காட்டுகிறது, ஆனால் சரிபார்க்காது. நீங்கள் காண்பதை உண்மையாக அல்ல, டோக்கன் முன்வைக்கும் கூற்றாகக் கருதுங்கள்.
சரிபார்ப்பு உங்கள் சர்வரில் நடக்க வேண்டும்; எதிர்பார்க்கும் அல்காரிதத்தை நிலைநிறுத்திய, பராமரிக்கப்படும் நூலகத்தைப் பயன்படுத்துங்கள். இரு பழைய தவறுகள் இதை விளக்குகின்றன: alg "none" ஏற்பது, இது யாரும் கையொப்பமற்ற டோக்கனைப் போலியாக உருவாக்க விடும்; மற்றொன்று அல்காரிதம் குழப்பம், இதில் RS256 எதிர்பார்க்கும் சர்வர் பொது கீயை HMAC ரகசியமாகக் கொண்டு HS256 signature-ஐச் சரிபார்க்கும்படி ஏமாற்றப்படும். டிகோடர் பிழைத்திருத்தத்துக்கானது: வழங்குநர் எந்த claims வழங்குகிறார் என்று பார்ப்பது, தவறான audience-ஐக் கண்டறிவது, அல்லது ஒரு நிமிடம் முன்பு exp கடந்ததால் அமர்வு தோல்வியடைந்தது என்று அறிவது. Base64url பகுதிகளை அப்படியே படிக்க Base64 டிகோடர் பயன்படுத்துங்கள்.
அடிக்கடி கேட்கப்படும் கேள்விகள்
- உண்மையான அணுகல் டோக்கனை JWT டிகோடரில் ஒட்டுவது பாதுகாப்பானதா?
- இந்தப் பக்கத்தில் டோக்கன் உங்கள் உலாவியை விட்டு வெளியே செல்வதில்லை. இருந்தாலும், செல்லுபடியாகும் டோக்கன் காலாவதியாகும் வரை கடவுச்சொல் போலவே செயல்படும்; எனவே காலாவதியான அல்லது சோதனை டோக்கன்களைப் பயன்படுத்துங்கள், நேரடி டோக்கன்களை ஸ்கிரீன்ஷாட்கள், அரட்டைகளில் வைக்காதீர்கள்.
- இப்போதுதான் வழங்கப்பட்ட டோக்கன் ஏன் காலாவதியானதாகக் காட்டுகிறது?
- முதலில் உங்கள் சாதனக் கடிகாரத்தைச் சரிபாருங்கள். சில வழங்குநர்கள் access token-க்கு சில நிமிடங்கள் மட்டுமே ஆயுள் தருகிறார்கள்; லாக்கிலிருந்து நகலெடுத்த டோக்கன் தோன்றுவதை விடப் பழையதாக இருக்கலாம். exp வினாடிகளுக்குப் பதிலாக மில்லிவினாடிகளில் எழுதப்பட்டால் எதிர்மாறாக, ஆயிரக்கணக்கான ஆண்டுகள் முன்னால் காட்டும்.
- என் JWT-யின் பேலோடை வேறொருவர் மாற்ற முடியுமா?
- அவர்கள் அதைத் திருத்தி மீண்டும் என்கோட் செய்யலாம், ஆனால் signature பொருந்தாது. சரியான கீ மற்றும் அல்காரிதத்துடன் signature-ஐச் சரிபார்க்கும் சர்வர் மாற்றப்பட்ட டோக்கனை நிராகரிக்கும்.
- JWS-க்கும் JWE-க்கும் என்ன வேறுபாடு?
- JWS (RFC 7515) கையொப்பமிடப்பட்டது, மூன்று பகுதிகள் கொண்டது, யாரும் படிக்கலாம். JWE (RFC 7516) குறியாக்கப்பட்டது, ஐந்து பகுதிகள் கொண்டது, கீ வைத்திருப்பவர் மட்டுமே payload-ஐப் படிக்க முடியும்.
- லாக் அவுட் செய்தால் JWT செல்லாததாகிவிடுமா?
- தானாக முடியாது. சர்வர் denylist வைத்திருந்தால் அல்லது அமர்வுப் பதிவைச் சரிபார்த்தால் ஒழிய, கையொப்பமிட்ட JWT exp வரை செல்லுபடியாகும்; அதனால்தான் access token-களுக்கு பொதுவாக குறுகிய ஆயுள் தரப்படுகிறது.