- 印刷する
 
ユーザー認証 - JWT認証
- 印刷する
 
JWT(JSON Web Tokens)は、暗号化データを作成するためのインターネット技術の1つです。JWTの詳細については、以下のページを参照してください。
JWT での認証
秘密鍵を使用して顧客のサーバー上でJWT文字列を作成および認証する方法です。これは、ほとんどの状況で推奨される方法です。
認証トークン生成のガイド
Shoplive で使用される JWT ペイロードは次のとおりです。
プロパティ  | 説明  | サンプル  | コメント  | 
|---|---|---|---|
expiration (必須)  | 有効期限 (タイムスタンプ)  | 1516239022  | トークンの有効期限  | 
userId (必須)  | ユーザーID  | sample_user_id  | ログインしたユーザーの一意性を保証する値  | 
name  | ユーザー名 (チャットウィンドウで使用)  | my_nickname  | 名前を指定しない場合は、チャットでユーザー入力を強制するか、キャンペーンのチャット設定に従ってランダムに作成することができます。  | 
gender  | ユーザーの性別  | 空 (指定なし)、m (男性)、f (女性)  | 合計/ログイン視聴者のデータを性別ごとに確認できます。  | 
age  | ユーザーの年齢  | 25  | 合計/ログイン視聴者のデータを年齢ごとに確認できます。  | 
custom  | カスタムデータ  | カスタムデータ  | 任意のデータを1KBまで設定できます。 合計/ログイン視聴者のデータをカスタムデータの区分ごとに確認できます。  | 
userScore  | ユーザー評価  | ユーザーレーティングを設定すると、レーティングに応じて入場イベントや抽選イベントをパーソナライズするための基準として使用できます。 整数は -100 から 100 まで使用できます。  | ユーザーレーティングを設定すると、レーティングに応じて入場イベントや抽選イベントをパーソナライズするための基準として使用できます。 整数は -100 から 100 まで使用できます。  | 
profile  | ユーザー プロフィール画像の URL  | ライブ放送のチャット一覧にプロフィール画像を表示する場合、画像のパスを直接設定できます。 推奨される画像サイズは 64px X 64px です。画像ファイルのサイズを過度に大きくしないようご注意ください。  | 
サンプルコード(JWTトークン生成)
Java
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class JwtAuthorizationGeneratorSample {
    public static void main(String[] args) {
        /*
         * Encryption algorithm
         * Refer to https://jwt.io or https://github.com/jwtk/jjwt for supported algorithms
         */
        String algorithm = "HS256";
        /*
         * The value issued from SHOPLIVE base64 encoded secret key
         */
        String base64EncodedSecretKey = "ckFXaWtRWENtSTA2QnpGVmxWNlBySWF4cUk1Q1pxbHU=";
        /*
         * Set expiring time for JWT token as 12 hours
         */
        long expiration = System.currentTimeMillis() + 12 * (60 * 60 * 1000);
        // OR
        // long expiration = LocalDateTime.now().plus(12, ChronoUnit.HOURS).atZone(ZoneId.systemDefault()).toEpochSecond();
        /*
         * User ID
         * User ID is the value that can identify the viewers uniquely and can be set up to 255 bytes.
         */
        String userId ="sample_user_id";
        /*
         * Nickname 
         * Banned words are replaced with '*'.
         */
        String name = "my_nickname";
        /*
         * Additional information for analyzing users based on the gender in the data insights.
         * male(m), female(f) others(n, null, etc.)
         */
        String gender = "f";
        /*
        /* Age or generation. Additional information for analyzing users based on age/generation in the data insights.
         * You can enter any non-negative number and will be summarized in the data insights grouped by 5 years.
         */
        Integer age = 15;
        
        /**
         * Provide the custom data along with the user information when downloading the list of participants from the data insights for storing user information in addition to userId.
         */
        String custom = "{\"userGrade\":\"VIP\"}";
        
        /**
         * Set user score. You can utilize these values when selecting winners for events or quizzes.
         */
        int userScore = 34;
      
        /**
         * User profile image URL
         */
        String profile = "https://image.shoplive.cloud/sample_profile.png";
        JwtBuilder builder = Jwts.builder()
            .signWith(SignatureAlgorithm.forName(algorithm), base64EncodedSecretKey)
            .setExpiration(new Date(expiration))
            .setIssuedAt(new Date())
            .claim("userId", userId)
            .claim("name", name)
            .claim("gender", gender)
            .claim("age", age)
            .claim("custom", custom)
            .claim("userScore", userScore)
            .claim("profile", profile);
      
        String jwt = builder.compact();
        System.out.printf("jwt: " + jwt);
    }
}JWTを生成し、Java以外のプログラミング言語で認証を実行する場合は、SHOPLIVE担当者に連絡してサポートを受けてください。