2016-10-21 9 views
1

私はPyJWT == 1.4.2を使用して、Firebase認証に使用するトークンを生成しています。不正なトークン署名を返すPyJWT

残念ながら、私はFirebaseTokenGeneratorで試したときに同じ難しさを抱えていたとしても、残念ながら私はサードパーティのPython Firebaseライブラリを使用できません。

私のAPIの中に、ユーザー名のトークンを生成する機能があります。

118  def generate_token(self, username): 
119   payload = { 
120    'something': 'Here', 
121   } 
122   secret = "TESTSECRET" 
123   token = jwt.encode(
124    payload, 
125    secret, 
126    algorithm='HS256') 
127   return token 

私は、この関数から取得したトークンの例は次のとおりです。

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzb21ldGhpbmciOiJIZXJlIn0.fpIMSRJ3AAL30LIDwHJM9ZOumdRzS7yooiiUgMPms2Y

残念ながら、これは有効なトークンではありません。 https://jwt.io/などのオンラインリソースから、署名部分が無効であることがわかります。

ない、これがさらに役立つ情報ですが、私はトークンをデコードしようとすると、私は次のように取得するかどうかわから:

b'{"alg":"HS256","typ":"JWT"}{"something"[83 chars]\x88' 

私が間違っているかもしれないもの上の任意の考え?

答えて

1

あなたがをトークンjwt.io&ペーストに移動してあなたはトークンを生成するために使用したのと同じように、それを検証するために使用される秘密を更新した場合、ツールは、署名があることを示しますが、実際に有効なトークンです有効です。

デフォルトでは、jwt.ioは、HS256アルゴリズムとデフォルトのシークレットsecretを使用して署名を検証しようとします。あなたは確かにHS256アルゴリズムを使ってJWTを作成していますので、有効かどうかを確認するために必要なのは、秘密の入力ボックスを更新してTESTSECRETを使用することだけです。

また、JWTの署名コンポーネントは生のバイナリデータで、これをテキストにデコードしようとすると正しく表示されない場合があります。 JWTの仕事の詳細については、Get Started with JSON Web Tokensを確認できます。

+0

*キーボードの頭が壊れています。それは確かに問題でした。 さらに、私はJWTのデコードが必ずしも正しく表示されないことに気づいていませんでした。私がそうしようとしたとき ** decoded = base64.b64decode(トークン)** 私は "間違ったパディング"エラーまたは私のペイロードのカットオフバージョンがあります。そのリソースは非常に役立ちます、ありがとう! –

+0

ソフトウェア開発では、常に私たちを得る小さな細部...クラブにようこそ。 :) –

関連する問題