在使用 BRTC-WTN 前,你需要通过生成JWT token 本文介绍如何使用 BRTC 提供的 AppID,AppSecret 使用Hash256方式,加密的secret使用 AppSecret, 并在 HTTP 请求头部的 Authorization 字段中填入该 JWT token。
AppID
AppSecret
Hash256
登录百家云后台,进入 BRTC 频道,点击对应的 App 相关的配置信息,及可以获取对应 App 的应用密钥(key)和 AppID。
签发token时候需要的参数如下:
JWT token加密使用 HS256, 使用上一步拿到的 AppSecret 作为secret进行签发token
特殊提示 room_id 为可选参数, 如果需要和BRTC标准产品进行对接,需要传指定的房间号, 如果仅作为WTN接入,可以忽略。
BRTC-WTN 提供了不同语言生成 JWT token 的示例代码供你参考:
[# PHP #]
<?php use Firebase\JWT\JWT; function sign($appid, $appsecret, $info) { $payload = array_merge($info, ['app_id' => $appid]); $token = JWT::encode($payload, $appsecret, 'HS256'); return $token; } // Example usage $appid = '123456'; $appsecret = 'your_appsecret'; $info = [ 'version' => '1.0', 'app_id' => '123456', 'stream_id' => 'stream001', 'room_id' => 'room001', 'exp' => 1632355200, 'action' => 'pub', 'enable_sub_auth' => true ]; $token = sign($appid, $appsecret, $info); echo $token; ?>
[# Java #]
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; public static String sign(String appid, String appsecret, Map<String, Object> info) { info.put("app_id", appid); String token = Jwts.builder() .setClaims(info) .signWith(SignatureAlgorithm.HS256, appsecret) .compact(); return token; } // Example usage String appid = "123456"; String appsecret = "your_appsecret"; Map<String, Object> info = new HashMap<>(); info.put("version", "1.0"); info.put("app_id", "123456"); info.put("stream_id", "stream001"); info.put("room_id", "room001"); info.put("exp", 1632355200); info.put("action", "pub"); info.put("enable_sub_auth", true); String token = sign(appid, appsecret, info); System.out.println(token);
[# Python #]
import jwt def sign(appid, appsecret, info): payload = {**info, 'app_id': appid} token = jwt.encode(payload, appsecret, algorithm='HS256') return token # Example usage appid = '123456' appsecret = 'your_appsecret' info = { 'version': '1.0', 'app_id': '123456', 'stream_id': 'stream001', 'room_id': 'room001', 'exp': 1632355200, 'action': 'pub', 'enable_sub_auth': True } token = sign(appid, appsecret, info) print(token)
[# Node.js #]
const jwt = require('jsonwebtoken'); function sign(appid, appsecret, info) { const payload = { ...info, app_id: appid }; const token = jwt.sign(payload, appsecret, { algorithm: 'HS256' }); return token; } // Example usage const appid = '123456'; const appsecret = 'your_appsecret'; const info = { version: '1.0', app_id: '123456', stream_id: 'stream001', room_id: 'room001', exp: 1632355200, action: 'pub', enable_sub_auth: true }; const token = sign(appid, appsecret, info); console.log(token);
[# Go #]
package main import ( "fmt" "github.com/dgrijalva/jwt-go" ) func sign(appid string, appsecret string, info map[string]interface{}) string { info["app_id"] = appid token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims(info)) tokenString, _ := token.SignedString([]byte(appsecret)) return tokenString } func main() { appid := "123456" appsecret := "your_appsecret" info := map[string]interface{}{ "version": "1.0", "app_id": "123456", "stream_id": "stream001", "room_id": "room001", "exp": 1632355200, "action": "pub", "enable_sub_auth": true, } token := sign(appid, appsecret, info) fmt.Println(token) }
JWT token鉴权
功能描述
在使用 BRTC-WTN 前,你需要通过生成JWT token 本文介绍如何使用 BRTC 提供的
AppID
,AppSecret
使用Hash256
方式,加密的secret使用AppSecret
, 并在 HTTP 请求头部的 Authorization 字段中填入该 JWT token。获取应用密钥
登录百家云后台,进入 BRTC 频道,点击对应的 App 相关的配置信息,及可以获取对应 App 的应用密钥(key)和 AppID。
计算JWT token
签发token时候需要的参数如下:
JWT token加密使用 HS256, 使用上一步拿到的
AppSecret
作为secret进行签发token签发示例
BRTC-WTN 提供了不同语言生成 JWT token 的示例代码供你参考:
[# PHP #]
[# Java #]
[# Python #]
[# Node.js #]
[# Go #]