@@ -47,13 +47,13 @@ private String hmacsha256(String identifier, long currTime, long expire, String
4747 }
4848 }
4949
50- private String genSig (String identifier , long expire , byte [] userbuf ) {
50+ private String genUserSig (String userid , long expire , byte [] userbuf ) {
5151
5252 long currTime = System .currentTimeMillis ()/1000 ;
5353
5454 JSONObject sigDoc = new JSONObject ();
5555 sigDoc .put ("TLS.ver" , "2.0" );
56- sigDoc .put ("TLS.identifier" , identifier );
56+ sigDoc .put ("TLS.identifier" , userid );
5757 sigDoc .put ("TLS.sdkappid" , sdkappid );
5858 sigDoc .put ("TLS.expire" , expire );
5959 sigDoc .put ("TLS.time" , currTime );
@@ -63,7 +63,7 @@ private String genSig(String identifier, long expire, byte[] userbuf) {
6363 base64UserBuf = new BASE64Encoder ().encode (userbuf );
6464 sigDoc .put ("TLS.userbuf" , base64UserBuf );
6565 }
66- String sig = hmacsha256 (identifier , currTime , expire , base64UserBuf );
66+ String sig = hmacsha256 (userid , currTime , expire , base64UserBuf );
6767 if (sig .length () == 0 ) {
6868 return "" ;
6969 }
@@ -79,9 +79,8 @@ private String genSig(String identifier, long expire, byte[] userbuf) {
7979 }
8080 /**用于生成实时音视频(TRTC)业务进房权限加密串,具体用途用法参考TRTC文档:https://cloud.tencent.com/document/product/647/32240
8181 * TRTC业务进房权限加密串需使用用户定义的userbuf
82- * @brief 生成 userbuf
82+ * 生成 userbuf
8383 * @param account 用户名
84- * @param dwSdkappid sdkappid
8584 * @param dwAuthID 数字房间号
8685 * @param dwExpTime 过期时间:该权限加密串的过期时间,超时时间内拿到该签名,并且发起进房间操作,时间为有效期
8786 * 实际填入userBuf为:expire,过期时间,当前时间 + 有效期(单位:秒)
@@ -152,19 +151,45 @@ public byte[] genUserBuf(String account ,long dwAuthID, long dwExpTime ,
152151
153152 return userbuf ;
154153 }
155-
156- public String genSig (String identifier , long expire ) {
157- return genSig (identifier , expire , null );
154+ /**
155+ *【功能说明】用于签发 TRTC 和 IM 服务中必须要使用的 UserSig 鉴权票据
156+ *
157+ *【参数说明】
158+ * @param userid - 用户id,限制长度为32字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。
159+ * @param expire - UserSig 票据的过期时间,单位是秒,比如 86400 代表生成的 UserSig 票据在一天后就无法再使用了。
160+ * @return usersig -生成的签名
161+ */
162+ public String genUserSig (String userid , long expire ) {
163+ return genUserSig (userid , expire , null );
158164 }
159- /*
160- * @param identifier 用户名
161- * @param expire 超时时间
162- * @param privilege 用户权限,255表示所有权限,主播0xff,观众0xab
163- * @param dwAccountType 用户类型,默认为0
164- * @return byte[] userbuf
165- */
166- public String genSigWithUserBuf (String identifier , long expire ,long roomnum , long privilege ) {
167- byte [] userbuf = genUserBuf (identifier ,roomnum ,expire ,privilege ,0 ); //生成userbuf
168- return genSig (identifier , expire , userbuf );
165+
166+ /**
167+ *【功能说明】
168+ * 用于签发 TRTC 进房参数中可选的 PrivateMapKey 权限票据。
169+ * PrivateMapKey 需要跟 UserSig 一起使用,但 PrivateMapKey 比 UserSig 有更强的权限控制能力:
170+ * - UserSig 只能控制某个 UserID 有无使用 TRTC 服务的权限,只要 UserSig 正确,其对应的 UserID 可以进出任意房间。
171+ * - PrivateMapKey 则是将 UserID 的权限控制的更加严格,包括能不能进入某个房间,能不能在该房间里上行音视频等等。
172+ * 如果要开启 PrivateMapKey 严格权限位校验,需要在【实时音视频控制台】/【应用管理】/【应用信息】中打开“启动权限密钥”开关。
173+ *
174+ *【参数说明】
175+ * @param userid - 用户id,限制长度为32字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。
176+ * @param expire - PrivateMapKey 票据的过期时间,单位是秒,比如 86400 生成的 PrivateMapKey 票据在一天后就无法再使用了。
177+ * @param roomid - 房间号,用于指定该 userid 可以进入的房间号
178+ * @param privilegeMap - 权限位,使用了一个字节中的 8 个比特位,分别代表八个具体的功能权限开关:
179+ * - 第 1 位:0000 0001 = 1,创建房间的权限
180+ * - 第 2 位:0000 0010 = 2,加入房间的权限
181+ * - 第 3 位:0000 0100 = 4,发送语音的权限
182+ * - 第 4 位:0000 1000 = 8,接收语音的权限
183+ * - 第 5 位:0001 0000 = 16,发送视频的权限
184+ * - 第 6 位:0010 0000 = 32,接收视频的权限
185+ * - 第 7 位:0100 0000 = 64,发送辅路(也就是屏幕分享)视频的权限
186+ * - 第 8 位:1000 0000 = 200,接收辅路(也就是屏幕分享)视频的权限
187+ * - privilegeMap == 1111 1111 == 255 代表该 userid 在该 roomid 房间内的所有功能权限。
188+ * - privilegeMap == 0010 1010 == 42 代表该 userid 拥有加入房间和接收音视频数据的权限,但不具备其他权限。
189+ * @return usersig - 生成带userbuf的签名
190+ */
191+ public String genPrivateMapKey (String userid , long expire ,long roomid , long privilegeMap ) {
192+ byte [] userbuf = genUserBuf (userid ,roomid ,expire ,privilegeMap ,0 ); //生成userbuf
193+ return genUserSig (userid , expire , userbuf );
169194 }
170195}
0 commit comments