2016-12-27 26 views
0

我試圖通過建議的JWT對象的Rest服務創建OpenTok會話。我試圖與Fiddler生成會話。OpenTok Rest服務在提琴手請求上無效的JWT錯誤

這裏是我的小提琴手請求(JWT字符串已更改與***部分出於安全原因)

POST HTTPS://api.opentok.com/session/create HTTP/1.1

主機:api.opentok.com

X-OPENTOK-AUTH:json_web_token

接受:應用/ JSON

的Content-Length:172

eyJ0eXAiOiJKV1QiL ****** iOiJIUzI1NiJ9.eyJpc3MiOjQ1NzM ****** OiJkZW5l ****** XQiOjE0ODI3OTIzO *** *** SOMESIGNEDKEYHERE。izvhwYcgwkGCyNjV ***** 2HRqiyBIYi9M

我得到了403 {「code」: - 1,「message」:「無效的標記格式」}錯誤可能意味着我的JWT對象不正確。我嘗試使用http://jwt.io(如opentok建議的)和其他網站創建它,並且所有這些都與tokbox(opentok)網站上的網站類似。

我需要一個解釋來修復它並創建一個會話。

可能是因爲我正在使用opentok試用嗎? JWT creation Parameters

回答

0

確定我已經找到了答案,最後,

你Opentok API密鑰;不宜直接用作登錄參數。在如下所示的java中,它應該先編碼。

Base64.encodeToString( 「DB4 ****** b51a4032a83 ******* 5d19a ***** E01」 .getBytes(),0)

我還沒有嘗試過的http://jwt.io和提琴手,但它似乎也會對它起作用。謝謝。完整的代碼在下面;

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; 
0

我有同樣的問題。我通過爲有效載荷部分設置正確的鍵值對來解決錯誤。我的有效載荷的

例子是在C#如下:

var payload = new Dictionary<string, object>() 
{ 
    { "iss", "45728332" }, 
    { "ist", "project" }, 
    { "iat", ToUnixTime(issued) }, 
    { "exp", ToUnixTime(expire) } 
}; 

了「IST」的值應設置爲「項目」,而不是你的項目的實際名稱。

更新:看看你的截圖,我可以說你沒有在右下角設置密鑰(這裏是你的來自TokBox賬戶的ApiKeySecret項目)。

+0

ist等於「項目」而不是「myprojectname」?真?一定是在開玩笑...讓我試試看。我會讓你知道結果。 –

+0

只是'ist'的一點背景:TokBox在用戶和帳戶級別使用其他聲明,在不同的上下文中。需要此字段來消除不同的發行者聲明類型的歧義。 – wobbals

+0

@TuğrulKarakaya那麼,它是如何去?你解決了這個問題嗎? –