本文にスキップする

アクセストークン

アクセストークン(access token)は、アプリケーションがPlanetKitを使用する際に必要な短期(short-lived)トークンです。アプリサーバーがアクセストークンを作成した後、返却します。

アクセストークンの認証の流れ

アクセストークンによる認証の流れは、次のとおりです。

  1. アプリクライアントは、アプリケーションで定義した通信チャネルを利用して、アプリサーバーにアクセストークンをリクエストします。このチャネルは、LINE Planetでは提供しません
  2. アプリサーバーは、アクセストークンを作成し、アプリクライアントに送信します。
  3. アプリクライアントは、アクセストークンを使用して通話パラメーターまたはカンファレンスパラメーターを初期化し、PlanetKitにアクセストークンを設定します。
  4. アプリクライアントは、通話パラメーターを使用して1対1通話を作成します。あるいはカンファレンスパラメーターを使用してグループ通話に参加します。

下図にて、アクセストークンによる認証の流れを示します。

Access token flow

アクセストークンの形式

アクセストークンは、JSON WebToken(JWT)です。JWTとは、ヘッダーおよびペイロード、署名からなるエンコードされたJSONオブジェクトです。

# JWT example
eyJ*****************.eyJ*********.*******************************************

ヘッダー

通常の場合、ヘッダーは2つの部分で構成されます。

  • トークンタイプ(typ):JWT
  • 署名アルゴリズム(alg):HS256
# Header example
# eyJ*********************************
{
"typ": "JWT",
"alg": "HS256"
}

ペイロード

# Payload example
# eyJ*****************************************************************************************************************************************************************************************************************************************************
{
"sub": "YOUR_SERVICE_ID",
"uid": "2048",
"iss": "YOUR_API_KEY",
"iat": 1617636530
}

署名

署名は、JSONオブジェクトではありません。署名を作成する際には、API secretを使用します。

# Signature example
# *********-*********-***********************
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), API-secret)

アクセストークンの作成方法

前提条件

アクセストークンを作成するには、API keyAPI secretが必要です。API keyを生成するを参考に、生成してください。

アクセストークンの作成

アクセストークンの作成は、アプリサーバーが担います。

Note

アプリクライアントはアクセストークンを作成してはいけません。

上述のように、JWTとは、ヘッダーおよびペイロード、署名からなるエンコードされたJSONオブジェクトです。アクセストークンを作成するには、それぞれに適切な値を設定する必要があります。使用する値は、以下の表で確認できます。

JWTヘッダー説明
typトークンタイプ。「JWT」である必要があります。JWT
alg署名アルゴリズム。HS256を使用しなければなりません。HS256
JWTペイロード説明
subサービスIDYOUR_SERVICE_ID
uidユーザーID1122
issAPI key****************************
iat作成時刻(秒単位)1615740516
Note

アクセストークンのサイズの増加を防止するには、上記のJWTパラメーター以外のペイロード値を追加しないでください。

アクセストークン作成のサンプルコード(Java)

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

public class AccessTokenGenerator {
public static void main(String[] args) {
String serviceId = "YOUR_SERVICE_ID";
String userId = "2048";
String apiKey = "YOUR_API_KEY";
String apiSecret = "YOUR_API_SECRET";

Map<String, Object> header = new HashMap<>();
header.put("typ", "JWT");

Date issuedAt = new Date(System.currentTimeMillis());

Algorithm algo = Algorithm.HMAC256(apiSecret);
String token = JWT.create()
//header
.withHeader(header)
//payload
.withSubject(serviceId)
.withIssuer(apiKey)
.withIssuedAt(issuedAt)
.withClaim("uid", userId)
//signature
.sign(algo);

System.out.println(token);
// eyJ*********************************.eyJ****************************************************************************************************************.***********-*******************************
}
}

他のプログラミング言語のサンプルは、JWTライブラリを参照してください。