JWT การสร้างโทเค็นด้วยวิธีการ

เมื่อคุณต้องการสร้างโทเค็นด้วยวิธี JWT คุณสามารถใช้ไลบรารีใดก็ได้ที่สร้าง JWT ตามมาตรฐานเว็บ (RFC7519) และสามารถอ้างอิงได้ที่ลิงก์นี้ https://jwt.io โดยกำหนดข้อมูลโทเค็นใน Payload และกำหนดคีย์เพื่อเข้ารหัสใน Secret โดยใช้อัลกอริทึม HS256

ตัวอย่างการเขียนโค้ด

ข้างล่างคือตัวอย่างของข้อมูลโทเค็นที่ถูกเข้ารหัสด้วยข้อมูล "this_is_test_secret_key_at_least_32_char"

{
    "uid": "test-user-2",
    "fullname": "박토끼",
    "email": "tokki.park@test.com",
    "ts": 1596611792131
}

Python

โค้ดด้านล่างเป็นตัวอย่างการสร้างโทเค็น JWT โดยใช้ไลบรารี pyjwt (https://github.com/jpadilla/pyjwt)

```python
import jwt

token = jwt.encode({
    "uid": "test-user-2",
    "fullname": "박토끼",
    "email": "tokki.park@test.com",
    "ts": 1596611792131
}, 'this_is_test_secret_key_at_least_32_char', algorithm='HS256')

print(token.decode('utf-8'))
# ผลลัพธ์ : eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJ0ZXN0LXVzZXItMiIsImZ1bGxuYW1lIjoiXHViYzE1XHVkMWEwXHViMDdjIiwiZW1haWwiOiJ0b2traS5wYXJrQHRlc3QuY29tIiwidHMiOjE1OTY2MTE3OTIxMzF9.ve6WJli1HrtU03SlWuDKAmYxFSM6dmxOe-1DGH65J8o
# ผลลัพธ์อาจแตกต่างกันไปตามเวลา คุณสามารถตรวจสอบได้ที่ <https://jwt.io>
```

C#

โค้ดด้านล่างเป็นตัวอย่างการสร้างโทเค็น JWT โดยใช้ไลบรารี System.IdentityModel.Tokens.Jwt (https://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/)

```csharp
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Text;

namespace jwt_test
{
	class Test
	{
		static void Main(String[] args)
		{
			var tokenHandler = new JwtSecurityTokenHandler();
			var tokenDescriptor = new SecurityTokenDescriptor
			{
				Claims = new Dictionary<string, object>
				{
					{"uid", "test-user-2" },
					{"fullname", "박토끼" },
					{"email", "tokki.park@test.com" },
					{"ts", 1596611792131L },
				},
				SigningCredentials = new SigningCredentials(
					new SymmetricSecurityKey(Encoding.UTF8.GetBytes("this_is_test_secret_key_at_least_32_char")),
					SecurityAlgorithms.HmacSha256Signature
				)
			};

			var stoken = tokenHandler.CreateToken(tokenDescriptor);
			var token = tokenHandler.WriteToken(stoken);

			Console.WriteLine(token);
      // ผลลัพธ์ : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJ0ZXN0LXVzZXItMiIsImZ1bGxuYW1lIjoi67CV7Yag64G8IiwiZW1haWwiOiJ0b2traS5wYXJrQHRlc3QuY29tIiwidHMiOjE1OTY2MTE3OTIxMzEsIm5iZiI6MTU5Njc2NzQwMSwiZXhwIjoxNTk2NzcxMDAxLCJpYXQiOjE1OTY3Njc0MDF9.5Ol83EyKiRWc6FoSJPEqv4zJFlIowMDKmvVPsomQVWQ
      // ผลลัพธ์อาจแตกต่างกันไปตามเวลา คุณสามารถตรวจสอบได้ที่ <https://jwt.io>
		}
	}
}
```

Java

โค้ดด้านล่างเป็นตัวอย่างการสร้างโทเค็น JWT โดยใช้ไลบรารี jjwt (https://github.com/jwtk/jjwt)

```java
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

public class Main {
	public static void main(String args[]) {
    String token = Jwts.builder()
      .setHeaderParam("typ", "JWT")  // สามารถไม่ระบุได้
      .claim("uid", "test-user-2")
      .claim("fullname", "박토끼")
      .claim("email", "tokki.park@test.com")
      .claim("ts", 1596611792131L)
      .signWith(SignatureAlgorithm.HS256, "this_is_test_secret_key_at_least_32_char".getBytes())     
      .compact();

    System.out.println(token);
    // ผลลัพธ์ : eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJ0ZXN0LXVzZXItMiIsImZ1bGxuYW1lIjoi67CV7Yag64G8IiwiZW1haWwiOiJ0b2traS5wYXJrQHRlc3QuY29tIiwidHMiOjE1OTY2MTE3OTIxMzF9.akIXRvSad0wjv6y86ko7-KkJHwjMfTPDwXQOYOlixHQ
    // ผลลัพธ์อาจแตกต่างกันไปตามเวลา คุณสามารถตรวจสอบได้ที่ <https://jwt.io>
	}
}
```

Last updated