OpenTok Rest服务在Fiddler请求上出现无效JWT错误

OpenTok Rest服务在Fiddler请求上出现无效JWT错误,rest,jwt,fiddler,opentok,tokbox,Rest,Jwt,Fiddler,Opentok,Tokbox,我正试图按照建议使用JWT对象通过Rest服务创建OpenTok会话。我试图与Fiddler生成会话 这是我的fiddler请求(部分出于安全原因,JWT字符串已更改为***) 发布https://api.opentok.com/session/create HTTP/1.1 主持人:api.opentok.com X-OPENTOK-AUTH:json\u web\u令牌 接受:application/json 内容长度:172 EYJ0Exaiioijkv1qil*******iOiJIUz

我正试图按照建议使用JWT对象通过Rest服务创建OpenTok会话。我试图与Fiddler生成会话

这是我的fiddler请求(部分出于安全原因,JWT字符串已更改为***)

发布https://api.opentok.com/session/create HTTP/1.1

主持人:api.opentok.com

X-OPENTOK-AUTH:json\u web\u令牌

接受:application/json

内容长度:172

EYJ0Exaiioijkv1qil*******iOiJIUzI1NiJ9.eyJpc3MiOjQ1NzM******OiJkZW5l****XQiOjE0ODI3OTIzO***某些指定键在此处***.IzvhwycgcyNjv****2hrqibyi9M

我得到403{“代码”:-1,“消息”:“无效令牌格式”}错误可能意味着我的JWT对象不正确。我试着使用(正如opentok所建议的)和其他站点创建它,所有这些看起来都是正确的,并且与tokbox(opentok)站点上的一个非常相似

我需要一个解释来修复它并创建一个会话

可能是因为我在使用opentok试用版?
我也有同样的问题。我通过为有效负载部分设置正确的键值对来解决这个错误

我的有效负载示例如下所示:

var payload=newdictionary()
{
{“iss”,“45728332”},
{“ist”,“项目”},
{“iat”,ToUnixTime(已发布)},
{“exp”,ToUnixTime(过期)}
};
“ist”的值应设置为“project”,而不是项目的实际名称


更新:看你的屏幕截图,我可以说你没有在右下角设置密钥(这里是你从TokBox account>project获得的ApiKeySecret)。

好的,我终于找到了答案

您的Opentok API密钥不应直接用作符号参数。在如下所示的java中,应该首先对其进行编码

Base64.encodeToString(“db4*******b51a4032a83*******5d19a*******e01.getBytes(),0)

我还没有试过它和小提琴,但它似乎也会工作。谢谢完整代码如下

payload = Jwts.builder()
             .setIssuedAt(currentTime)
             .setIssuer("YOUR_OPENTOK_KEY")
             .setExpiration(fiveMinutesAdded)
             .claim("ist", "project")
             .setHeaderParam("typ","JWT")
            .signWith(SignatureAlgorithm.HS256, Base64.encodeToString("YOUR_OPENTOK_SECRET".getBytes(),0))
            .compact();
    return payload;

它是否等于“project”而不是“myprojectname”?真正地一定是在开玩笑。。。让我试试。我会让你知道结果的。只需了解一下
ist
:TokBox在不同的上下文中在用户和帐户级别使用其他声明。需要这个字段来消除不同发行人索赔类型的歧义。@TuğrulKarakaya那么,结果如何?您解决了问题吗?我尝试使用旧方法“connection.setRequestProperty”(“X-TB-PARTNER-AUTH”,“45737392:db4****b51a4032a838**4c865d19****01”);”我的代码正确地从REST服务获取sessionID。这意味着我调用服务的Java代码是可以的。但在尝试使用新的和建议的有效载荷方法时,仍然给出403错误。我尝试了所有的可能性。请在下面找到我的代码;这里,我的有效载荷创建者payload=Jwts.builder().setIssuedAt(currentTime).setIssuedAt(“45737392”).setExpiration(在添加五分钟后).索赔(“ist”,“项目”).signWith(SignatureAlgorithm.HS256,“db4fde14b51a4032*******c865d19a14be01”).compact(); 返回有效载荷;但即使我在jwt.io上创建了有效负载,它仍然不起作用。有什么奇怪的想法@R.Cha
payload = Jwts.builder()
             .setIssuedAt(currentTime)
             .setIssuer("YOUR_OPENTOK_KEY")
             .setExpiration(fiveMinutesAdded)
             .claim("ist", "project")
             .setHeaderParam("typ","JWT")
            .signWith(SignatureAlgorithm.HS256, Base64.encodeToString("YOUR_OPENTOK_SECRET".getBytes(),0))
            .compact();
    return payload;