メインコンテンツまでスキップ

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

以下のコードは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>で検証してください。
}
}
```