在调用 WTN 服务端 API 时,你需要传入 Token,完成鉴权。此 Token 来自你的应用服务端,根据 WTN AppID、发布 StreamID、时间戳等参数生成。
注:在订阅媒体流时,你可以根据业务需要,选择是否需要鉴权。WTN 建议在需要强权限控制时,选择开启订阅鉴权,如付费音视频课程等场景。
鉴权全流程如下。
如图所示:
你需要自行实现步骤 1, 2, 3, 4 的代码逻辑。
生成算法:使用 Json Web Tokens,其中加密算法使用 HS256。
生成规则:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), YourAppKey )
字段参考:
{ "alg": "HS256", "typ": "JWT" }
1.0
。pub
,订阅时,取值为 sub
。action = pub
时,包含此值。不开启订阅鉴权,取值为 false
;开启订阅鉴权,取值为 true
。调用接口获取 TURN 服务信息时,
payload
仅需要传入version
,appID
,和exp
字段。
你可以参考示例代码,在应用服务端实现 Token 的生成。
以下是 GoLang 的实现参考:
import ( "github.com/golang-jwt/jwt/v4" "time" ) func main() { appKey := []byte("aaa") // 创建Token结构体 MapClaims就是payload相关字段 claims := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ "version": "1.0", "appID": "2xxxxx", "exp": time.Now().Unix() + 111, "action": "pub", // pub: 发布; sub: 订阅 "streamID": "111", "enableSubAuth": true, }) token, err := claims.SignedString(appKey) }