Authentication refers to verifying whether a user has the right to access the system to avoid security risks caused by lack of permission Controller or improper operation. ZEGO authenticates users through tokens (including basic authentication tokens and authorization authentication tokens).
Basic authentication Token means that the developer must pass the Token to the SDK through the SetCustomToken interface to verify the legitimacy of the user before logging in to the room.
Permission authentication Token refers to opening the room ID permission bit to further improve security, which can verify the ID of the login room.
Go to ZEGOCLOUD Admin Console to get the App ID and ServerSecret of your project.
After getting your AppID and ServerSecret, you can define the validation rules on your app server or client based on your business requirements.
Upon request from your app clients, your app server generates Tokens and sends the Tokens to the corresponding app clients.
ZEGOCLOUD provides an open-source Token generator plug-in on GitHub, which you can use to generate Tokens on your app server using different programming languages such as Go, C++, Java, Python, PHP,.NET, and Node.js.
Currently, the Token generator we provided supports generating the following two Tokens:
payload
field.payload
field needs to be generated based on the following validation rules:token04
of the Token generator to generate a Token.Language | Supported version | Core function | Code base | Sample code | |
---|---|---|---|---|---|
User identity Token | User privilege Token | ||||
Go |
Go 1.14.15 or later |
GenerateToken04 |
|||
C++ |
C++ 11 or later |
GenerateToken04 |
|||
Java |
Java 1.8 or later |
generateToken04 |
|||
Python |
Python 3.6.8 or later |
generate_token04 |
|||
PHP |
PHP 5.6 or later |
generateToken04 |
|||
.NET |
.NET Framework 3.5 or later |
GenerateToken04 |
|||
Node.js |
Node.js 8 or later |
generateToken04 |
Take Go language as an example, you can do the following steps to generate a Token:
GenerateToken04
method to generate a Token.The following code shows how to generate a user identity Token:
package main
import (
"fmt"
"github.com/ZEGOCLOUD/zego_server_assistant/token/go/src/token04"
)
/*
Sample code for generating a user identity Token:
*/
func main() {
var appId uint32 = 1
userId := "demo"
serverSecret := "fa94dd0f974cf2e293728a526b028271"
var effectiveTimeInSeconds int64 = 3600
var payload string = ""
token, err := token04.GenerateToken04(appId, userId, serverSecret, effectiveTimeInSeconds, payload)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(token)
}
The following code shows how to generate a user privilege Token:
package main
import (
"encoding/json"
"fmt"
"github.com/ZEGOCLOUD/zego_server_assistant/token/go/src/token04"
)
/*
Sample code for generating a user privilege Token:
*/
//Token-based business logic: RTC room-related authentication property
type RtcRoomPayLoad struct {
RoomId string `json:"room_id"` //Room ID: used to to validate the room.
Privilege map[int]int `json:"privilege"` //User privilege authentication control list: used to validate user privileges
StreamIdList []string `json:"stream_id_list"` //Stream list: used to validate the stream. This value can be null, and no stream will be validated if it is null.
}
func main() {
var appId uint32 = 1
roomId := "demo"
userId := "demo"
serverSecret := "fa94dd0f974cf2e293728a526b028271"
var effectiveTimeInSeconds int64 = 3600
privilege := make(map[int]int)
privilege[token04.PrivilegeKeyLogin] = token04.PrivilegeEnable
privilege[token04.PrivilegeKeyPublish] = token04.PrivilegeEnable
payloadData := &RtcRoomPayLoad{
RoomId: roomId,
Privilege: privilege,
StreamIdList: nil,
}
payload, err := json.Marshal(payloadData)
if err != nil {
fmt.Println(err)
return
}
token, err := token04.GenerateToken04(appId, userId, serverSecret, effectiveTimeInSeconds, string(payload))
if err != nil {
fmt.Println(err)
return
}
fmt.Println(token)
}
To make it easier for you to try and test the user authentication feature, ZEGOCLOUD Admin Console provides a tool for generating temporary Tokens, which you can use directly in a testing environment. In production, you must generate Tokens on your app server.
Passes the Token to the SDK through the SetCustomToken interface before logging in to the room.
LIVEROOM::SetCustomToken("Token"); // Replace Token with the obtained Token information