ตัวอย่างการใช้ JWT ร่วมกับ JAVA
JWT คืออะไร
JWT ย่อมาจาก Json web token เป็นรูปแบบหนึ่งที่ใช้ในการสร้างรหัส token จากข้อมูล Json data แล้วทำการเข้ารหัสด้วย Base64url Encoded
JWT ประกอบด้วย 3 ส่วนหลักๆซึ่งถูกขั้นด้วย (.)
◉ Header เป็นส่วนที่บอกรายละเอียดของ JWT
◉ Body เป็นส่วนที่เก็บข้อมูล Json data ที่เราต้องการส่งไปใน Token
◉ Signature เป็นส่วนสำหรับความปลอดภัยของ JWT ซึ่งเกิดจากการรวมตัวของ Header และ Body เข้ารหัส Base64 แล้วมาต่อกันด้วย (.) แล้วจึงเอา string ตัวใหม่ที่ได้ไปทำการเข้ารหัส HMAC SHA 256 กับ secret key อีกทีหนึ่ง จึงจะได้ส่วนของ signature
xxxxxxxxxx.yyyyyyyyyy.zzzzzzzzzz
สามารถ Generator JWT เพื่อใช้ในการทดสอบการเขียนโปรแกรมได้ที่ คลิก
PrivteKey ใช้สำหรับเข้ารหัส Json data ได้มาซึ่ง Token
PublicKey ใช้สำหรับถอดรหัส Token ได้มาซึ่ง Json data
- ตัวอย่างโครงสร้าง Project
2. Creat Project
[1] File > New > Java Project
[2] Project name :JWTTEST
[3] Finish
3. Create file /key/private.key
4. Create file /key/public.key
5. Create class Constan.java
6. Create class PemUtil.java
7. Create class JWTUtil.java
8. Create class MainTest.java
9. Test
[1] click right > Run App > Java Application
OutPut
tokenResult :eyJKV1QiOiJ0eXAiLCJhbGciOiJSUzUxMiJ9.eyJURVNUMDEiOiJNQU1FRSBFSUVJIiwiZXhwIjoxNjMwMjI4MzAxLCJURVNUMDIiOiJNQUxFRSBFSUVJIiwianRpIjoiQ09ERTAwMDEifQ.sjTZXe5Lm9fVAp5oRfJG5iPmTL7tRoVulzD4ceuy5Gg8vRgAFZLF8URHJGp0fAXchqRJSegTr_TDtOrYiZdq4_04lefdkgNvvUFaRhMczpv_mLnLXd4pD9kFShBeFtZ7Zobu-CVlLHaIJQgrKr06Oz0pTBNmnY7g9FZagPO5-t04-MUIXezEluX4S3byFGL_z8PaJVk2fk1bicnYsBC3os0b99KbSjr141P4MuH9VIhKC8LFZbCK_4gvPqi2qguKI7WLGubTSYt-rBYLhBM0HFBe28iD_Xzqln2OhHYBvhUq33Zc33ugoEFDsdAB7nZzy3KzWDBhIZf3gaYXcVn-AwclaimsResult :{TEST01=MAMEE EIEI, exp=1630228301, TEST02=MALEE EIEI, jti=CODE0001}
*** สรุป ***
JWT สามารถใช้ได้กับหลายภาษา รองรับข้อมูลรูปแบบ JSON สามารถส่งผ่าน HTTP, header, URL และมีความปลอดภัย
*** Source code ***
https://gitlab.com/java59/jwttest