2016-08-17 11 views
1

Json Webトークンを使用してトークンを生成しました。トークンJSON Webトークン、クライアント固有にする

_tokenValidationParameters = new TokenValidationParameters 
     { 
      // The signing key must match! 
      ValidateIssuerSigningKey = true, 
      IssuerSigningKey = signingKey, 
      ValidateActor=true, 

      // Validate the JWT Issuer (iss) claim 
      ValidateIssuer = true, 
      ValidIssuer = "TokenIssuer", 

      // Validate the JWT Audience (aud) claim 
      ValidateAudience = true, 
      ValidAudience = "Audience", 

      // Validate the token expiry 
      ValidateLifetime = true, 

      ClockSkew = TimeSpan.Zero, 

     }; 

を生成しながら、私は、次のパラメータを使用する問題は、トークンは、他のコンピュータ上で使用することができて、それが有効なものとしてトークンを認可します。別のクライアントコンピュータから生成されたトークンを無効にする必要があります。

+0

トークンはクライアントから生成されますか? –

+0

サーバによって生成されたものはありません。 – Ruchan

答えて

0

動作は理にかなっています。トークンは有効な資格情報で生成され、有効期限が切れるまで任意のコンピュータから使用できます。

これは、OAuth2の全体的なポイントです。トークンはユーザー固有のものではなく、アプリケーション固有のものです。

それでも特定のコンピュータにネクタイしたい場合は、元のコンピュータを識別する何かを追加することができます.IPアドレス、ホスト名、MACアドレスなどは、コンピュータを一意に識別できるものになります。この情報を生成されたトークン自体に追加することができます。トークンを使用するときは、元のデータと一致するかどうかを確認するだけです。

私はセキュリティ対策としてこれをやりたいと思っていますが、それでもシステムを使用する方法はないと思います。トークンは常にHTTPSで暗号化された認証ヘッダーに渡されるので、常に安全です。

HTTPSを介して認証サーバーと常に通信して、要求の種類や要求の傍受を防ぐ必要があります。

+0

IPアドレス、ホスト名、およびMACアドレスはすべて、比較的簡単になりすまし/偽装できます。 – DavidG

1

短い答え:いいえ。

長い答え:

何を探してるんですが、デバイス認証である、アイデンティティーする機能デバイスとそのデバイスだけが通信していることを確認。これはよく知られている問題です。つまり、OSのレベルでデバイスを制御し、トークンを盗まれないようにします(アプリの悪用、デバイスの悪用、または通信エクスプロイトを介して)。それは不可能の隣にある。

OAuthでは、サーバーがクライアントではなくトークンを生成しているので、これはさらに不可能です。それはOAuthが設計したものではありません。

関連する問題