鉴权原理
iRTC系统使用HmacSHA256加密生成签名作为接入鉴权方式,需要在SDK加入房间时设置“signature”和“timeStamp”。“signature”为标识签名,由租户使用ISDPRTC提供的 “accessKey”、“appId”以及当前的“channelId”,“userId”,“timeStamp”,按照ISDPRTC的签名生成样例自行生成。
accessKey获取方式:
应用管理页面查看accessKey
图7.4.1-1 查看accessKey
Token由两部分组成(payload+signature):
1.PAYLOAD部分,包含以下字段。
{ "userId": "1234567890", "timeStamp": 123456789, "channelId": "", "appId": "", "host": "", "port": "", "role": "", "tenantId": "" }
字段解析:
- userId:String类型,
- timeStamp:Long类型,签名UTC时间戳,单位:毫秒
- channelId:String类型,频道ID
- appId:String类型,应用ID,创建应用获取
- host: String类型,媒体服务器接入IP
- port: String类型,媒体服务器接入端口
- tenantId: String类型,租户ID
- userRole:String类型, 用户角色,可以标识媒体方向,取值如下:
1:joiner(发布并观看)。
0:publisher(只发布不观看)。
2.SIGNATURE部分,由PAYLOAD进行HmacSHA256加密,对PAYLOAD+SIGNATURE进行Base64转码,得到入会token。
Token原理: base64Encode(payload + "@#@" + HMACSHA256(signature))
最终的signature值为:
示例:
eyJ0aW1lU3RhbXAiOjE2NDg2NDE0NzQxNzEsInJvbGUiOiIxIiwicG9ydCI6IjQ0MyIsImFwcElkIjoic2RjcGZXcU1jTUdKSDVsa2lFakNmcEd0TXpsWlBNMFQiLCJob3N0I joiMTEuMjIuMzMuNDQiLCJ0ZW5hbnRJZCI6IjIwMTIiLCJ1c2VySWQiOiIxMjEyMzEyMzEyMzEyMyIsImNoYW5uZWxJZCI6IjIyMjUwNzMwMjUzMTE0MSJ9QCNAbT J1UGJDdFBtSzdJQ2J1bHp6ZnptVFQ3RXZTbG9WY0lhcldyMWlWOUkzMD0=