2016-06-14 20 views
-1

私のJWTトークンは以下のようになります。Web APIのC#でJWTトークンを暗号化するにはどうすればよいですか?

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9leGFtcGxlLm9yZyIsImF1ZCI6Imh0dHA6XC9cL2V4YW1wbGUuY29tIiwiaWF0IjoxMzU2OTk5NTI0LCJuYmYiOjEzNTcwMDAwMDAsImV4cCI6MTQwNzAxOTYyOSwianRpIjoiaWQxMjM0NTYiLCJ0eXAiOiJodHRwczpcL1wvZXhhbXBsZS5jb21cL3JlZ2lzdGVyIiwidGVzdC10eXBlIjoiZm9vIn0.UGLFIRACaHpGGIDEEv-4IIdLfCGXT62X1vYx7keNMyc

私はJWT上記のトークンをコピーしhttps://jwt.io/に貼り付けた場合、実際の情報は、この

Image

のように見せている私がしたいですJWTトークンを暗号化して、誰もWeb API内の自分の情報にアクセスすることはできません。だから、私はどの暗号化アルゴリズムを使用したいですかもし私に適切なソリューションを提供してください

ここに私のStartup.csファイルはJWTトークンを承認するためのものです。

 // Api controllers with an [Authorize] attribute will be validated with JWT 

     app.UseJwtBearerAuthentication(
      new JwtBearerAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AllowedAudiences = new[] { audience }, 
       IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
       { 
        new SymmetricKeyIssuerSecurityTokenProvider(issuer, secret) 
       } 
      }); 

    } 
+2

JWTではトークンを暗号化できますが、接続がTLS/SSLですでに保護されているため、トークンを暗号化する必要はありません。 – Dirk

答えて

2

なぜ誰かがこの情報を見ることができるのが問題だと思いますか?認証にJWTを使用している場合は、認証されたばかりのユーザーのみがこのトークンを取得し、おそらくこのユーザーに関する情報が含まれています。だから、ユーザーが自分自身に関する情報を見ることができるようにすることは害ではありません。

最も重要なことに、誰もそれを偽造して別のユーザーのふりをすることができず、十分であるように、トークンはmac'edです。

コメントに記載されているとおり、とにかくTLSを使用する必要があるため、移行時に暗号化されています。

+0

私のJWTトークンで私はUserIDのような情報を保存したい。誰かがそれを入手してハックすることができるように –

+0

「誰か」はこのIDを持っているユーザー、またはTLSを使用している場合はマシンに物理的にアクセスできるユーザーだけなので、問題はありません。 UserIdが問題ではないことを知っている(他のより重要な脆弱性がない限り)ので、SQLサーバーからのIDだけを使用することは問題ではありません。問題は、要求があったときにユーザー入力とアクセス権をチェックしない場合です。もう1つのことは、userIdがユーザーに知られていても、mac'edのため、JWTでuserIdを変更できないということです。 –

関連する問題