본문으로 건너뛰기

JWT 방식으로 토큰 생성

JWT 방식으로 토큰 생성 시 웹표준(RFC7519) JWT를 구현하는 임의의 라이브러리(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

아래의 코드는 pyjwt 라이브러리(https://github.com/jpadilla/pyjwt)를 사용하여 JWT 토큰을 생성하는 예시입니다.

```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#

아래의 코드는 System.IdentityModel.Tokens.Jwt 라이브러리(https://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/)를 사용하여 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

아래의 코드는 jjwt 라이브러리(https://github.com/jwtk/jjwt)를 사용하여 JWT 토큰을 생성하는 예시입니다.

```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> 에서 검증해보시기 바랍니다.
}
}
```