Fiddler 请求上的 OpenTok Rest 服务无效 JWT 错误
OpenTok Rest Service Invalid JWT Error on Fiddler Request
我正尝试按照建议使用 JWT 对象通过 Rest 服务创建 OpenTok 会话。我尝试用 Fiddler 生成会话。
这是我的 fiddler 请求(出于安全原因,JWT 字符串已部分更改为 ***)
POST https://api.opentok.com/session/create HTTP/1.1
主机:api.opentok.com
X-OPENTOK-AUTH:json_web_token
接受:application/json
内容长度:172
eyJ0eXAiOiJKV1QiL******iOiJIUzI1NiJ9.eyJpc3MiOjQ1NzM******OiJkZW5l******XQiOjE0ODI3OTIzO***SOMESIGNEDKEYHERE***.izvhwYcgwkGCyNjV*****2HRqiyBIYi9M
我收到 403 {"code":-1,"message":"Invalid token format"} 错误可能意味着我的 JWT 对象不正确。我尝试使用 http://jwt.io(如 opentok 所建议的那样)和其他站点来创建它,所有这些看起来都是正确的并且与 tokbox (opentok) 站点上的非常相似。
我需要一个解释来修复它并创建一个会话。
可能是因为我用的是opentok试用版?
JWT creation Parameters
我遇到了同样的问题。我通过为有效负载部分设置正确的键值对解决了这个错误。
我的负载示例在 C# 中如下所示:
var payload = new Dictionary<string, object>()
{
{ "iss", "45728332" },
{ "ist", "project" },
{ "iat", ToUnixTime(issued) },
{ "exp", ToUnixTime(expire) }
};
"ist" 的值应设置为 "project",而不是项目的实际名称。
更新:看你的截图,我可以说你没有在最右下角设置密钥(这里是你在TokBox账户>项目中的ApiKeySecret)。
好的,我终于找到答案了,
您的 Opentok API 密钥不应直接用作 Sign 参数。如下图java中,要先编码
Base64.encodeToString("db4******b51a4032a83*******5d19a*****e01".getBytes(),0)
我还没有在 http://jwt.io 和 fiddler 上尝试过,但它似乎也适用于它。谢谢。完整代码如下;
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;
我正尝试按照建议使用 JWT 对象通过 Rest 服务创建 OpenTok 会话。我尝试用 Fiddler 生成会话。
这是我的 fiddler 请求(出于安全原因,JWT 字符串已部分更改为 ***)
POST https://api.opentok.com/session/create HTTP/1.1
主机:api.opentok.com
X-OPENTOK-AUTH:json_web_token
接受:application/json
内容长度:172
eyJ0eXAiOiJKV1QiL******iOiJIUzI1NiJ9.eyJpc3MiOjQ1NzM******OiJkZW5l******XQiOjE0ODI3OTIzO***SOMESIGNEDKEYHERE***.izvhwYcgwkGCyNjV*****2HRqiyBIYi9M
我收到 403 {"code":-1,"message":"Invalid token format"} 错误可能意味着我的 JWT 对象不正确。我尝试使用 http://jwt.io(如 opentok 所建议的那样)和其他站点来创建它,所有这些看起来都是正确的并且与 tokbox (opentok) 站点上的非常相似。
我需要一个解释来修复它并创建一个会话。
可能是因为我用的是opentok试用版? JWT creation Parameters
我遇到了同样的问题。我通过为有效负载部分设置正确的键值对解决了这个错误。
我的负载示例在 C# 中如下所示:
var payload = new Dictionary<string, object>()
{
{ "iss", "45728332" },
{ "ist", "project" },
{ "iat", ToUnixTime(issued) },
{ "exp", ToUnixTime(expire) }
};
"ist" 的值应设置为 "project",而不是项目的实际名称。
更新:看你的截图,我可以说你没有在最右下角设置密钥(这里是你在TokBox账户>项目中的ApiKeySecret)。
好的,我终于找到答案了,
您的 Opentok API 密钥不应直接用作 Sign 参数。如下图java中,要先编码
Base64.encodeToString("db4******b51a4032a83*******5d19a*****e01".getBytes(),0)
我还没有在 http://jwt.io 和 fiddler 上尝试过,但它似乎也适用于它。谢谢。完整代码如下;
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;