2016-10-01 6 views
0

成功したログイン後、ノードアプリケーションはJWTトークンを返します。有効なJWTトークンを改ざんしました

JWTは、ユーザーID、有効期限および秘密で署名されています。ここで

私はIDを持つユーザーのためのトークンを生成する方法です:1:

return jwt.sign({ 
     _id: 1, 
     exp: exp_date), 
    }, "MY_SECRET"); 
    }; 

私のバックエンド・アプリケーションは、それからユーザーを識別するので、トークンの:

それは "を持つユーザーのために可能だろうid:2 "のユーザであるかのように、バックエンドアプリケーションで" id:2 "を設定してから、バックエンドアプリケーションで欺くのですか?

答えて

2

ない誰かがあなたが秘密を後で検証のためのペイロードに署名するために使用されるJSON

1

の署名に使用しているあなたの秘密鍵へのアクセスを得た場合を除きます。コンセプトをよく示すJWTのウェブサイト(https://jwt.io/)をご覧ください。

トークンペイロードは暗号化されていないため、誰でも読み取り、変更することができます。ペイロードに最初に署名することによって、トークンが検証されたときの変更を認識することができます。だから誰かがユーザIDを変更した場合、ペイロードのハッシュサムが変更され、秘密鍵を持たずに署名を再作成する方法はありません。したがって、トークンを認識せずに操作することはできません。

署名インスタンスとトークンを検証するインスタンス間で共有する必要がある単純な秘密を使用する代わりに、秘密鍵とトークンの有効性で署名する公開鍵暗号を使用する可能性もあります署名付きトークン自体を作成することを許可しない証明書によって検証することができます。私は署名されていないサービスの1つが危険にさらされたときにトークンを操作する機会がないので、分散した設定に対してこのアプローチを提案します。

関連する問題