- Print
JWT authentication
- Print
JWT (JSON Web Tokens) is one of the Internet standards for creating data using encryption. For more information on JWT, refer to the page below.
JWT authentication
It is a method of creating and authenticating a JWT string on the customer's server using a secret key. This is the recommended method in most situations.
Authentication token generating guide
The JWT payloads used by Shoplive are as follows:
Property | Description | Sample | Comment |
---|---|---|---|
expiration (Required) | Expiry Time (timestamp) | 1516239022 | Expiry time of token |
userId (Required) | User ID | sample_user_id | A value that ensures the uniqueness of a logged-in user |
name | User name (Used in the chat window) | my_nickname | If you don't specify a name, you can force user input on chat or create it randomly according to the chat settings of the campaign. |
gender | User gender | Empty value (not specified), m (male), f (female) | It allows checking the total/login viewers' data. |
age | User age | 25 | It allows checking the total/login viewers' data. |
custom | Custom data | custom data | Any data can be set up to 1KB. It allows checking the total/login viewers' data. |
userScore | User rating | 10 | Setting the user rating allows using it as a standard for personalizing entrance and drawing events according to the rating. Integers are available from -100 to 100. |
userType | User type | VIP | When entering a broadcast with set entry restrictions (Entry Type), you can reference this value to configure access exclusively for specific users (VIP). |
profile | User profile image URL | When displaying a profile image in the chat list of a broadcast, you can directly set the image path. The recommended image size is 64px X 64px. Please be cautious not to increase the image file size excessively. |
Sample code (JWT token generation)
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 = "{Custom Data}";
/*
* Set user score. You can utilize these values when selecting winners for events or quizzes.
*/
int userScore = 34;
/*
* When entering a broadcast with set entry restrictions (Entry Type), you can reference this value to configure access exclusively for specific users (VIP).
*/
String userType = "VIP";
/*
* 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("userType", userType)
.claim("profile", profile);
String jwt = builder.compact();
System.out.printf("jwt: " + jwt);
}
}
If you want to generate JWT and run authentication through a programming language other than Java, Contact SHOPLIVE Representative for support.