2016-03-24 22 views
0

私はJWTトークンを受け取り、クレームを通過してリクエストに応答するアプリケーションを持っています。 JWTトークンを受け取ったら、それが私が信頼するアイデンティティサーバーによって発行されているかどうかを検証したいと思います。 アプリケーションがJWTトークンの検証をどのように実行できるか考えてみましょうか? アプリケーションは単に /connect/identitytokenvalidation?token = & client_id =を呼び出し、トークンの検証を完了しますか? RequestAssertionAsyncを呼び出すためにTokenClientインスタンスを作成する必要がありますか?または単にクエリ文字列にトークン値を渡してHTTPリクエストを取得させることができますか? トークンの値は次のように取得できます。 Request.GetOwinContext()。Request.Headers ["Authorization"];クライアントアプリケーションのトークンの妥当性確認

いずれのサンプルも大きな助けになるでしょう。

+0

"アプリケーション"はウェブAPIですか?トークンはアクセストークンですか? – leastprivilege

+0

はい、実際にIdentityServer3サンプルの一部としてデプロイされたサンプルWeb APIを使用しています。トークンはアクセストークンです。私はまだトークンを検証する方法を探しています。どのサンプルも大きな助けになるでしょう。 –

+0

また、以下のようにトークン値をフォームに渡して、URL:https:// myserver/IdentityServer/connect/accessTokenValidationを呼び出してみました。var form = new { token = Request.GetOwinContext()。Request.Headers [ "Authorization"] }; var resp = PostForm(TestUrl、form);しかし、応答は悪い要求として来ています。 –

答えて

0

エンドポイントがKatanaパイプラインで実行されている場合は、Microsoft JWTベアラ認証ミドルウェアを使用するか、IdentityServer3.AccessTokenValidationミドルウェアを使用できます。いずれも適切な検証となります。

これらを使用して手動で行う必要がない場合は、Microsoft JwtSecurityTokenHandlerクラスを使用して検証を実行できます。

ここに私たちのサンプルウェブAPI

https://github.com/IdentityServer/IdentityServer3.Samples/blob/master/source/Clients/SampleAspNetWebApi/Startup.cs

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions 
      { 
       Authority = "https://localhost:44333/core", 
       RequiredScopes = new[] { "write" }, 
      }); 
+0

はい、私はこの呼び出しを持っています:UseIdentityServerBearerTokenAuthenticationをApplication2のstartup.csに配置しました。着信トークンがいつ検証されるのか不思議です... Application1がApplication2を呼び出すとき、Application1はトークンをApplication2に渡します。だから私はApplication2で上記のコードがあれば十分ですか?トークンは自動的に検証されますか? –

+0

また、API:app.UseIdentityServerBearerTokenAuthenticationがIdenityServerを呼び出してトークンを検証していないことがわかりました。だから、私はトークンが検証されると思います –

0

IdentityServer3.AccessTokenValidationを使用する方法上の任意のサンプルからコードの関連する行をですか?私はまだトークンを検証する方法を理解しようとしています。以下に示すように 私のアプリケーション1は、オブジェクト(Applicaiton2を指して)クライアントにトークンを設定します。リクエストはアプリケーション2に行く

var client = new HttpClient 
      { 
       BaseAddress = new Uri(Application2Address) 
      }; 

      client.SetBearerToken(token); 

今とき、私はことを確認するために、アプリケーション2でこのトークンを検証する、トークン信頼できるIdentity Serverによって発行されます。