2017-08-15 2 views
1

APIコールからファイルをダウンロードしたいと考えています。議論のために、それは自動的に生成されたPDFファイルだとしましょう。IdentityServerで保護されたファイルをダウンロードする方法

私は2つの問題を抱えて:

  1. アンカータグは、リクエストにのみXHR缶をAuthorizationヘッダを追加することはできませんが。
  2. XHRリクエストはファイルをダウンロードできません。

私の解決方法は、[AllowAnonymous]エンドポイントを持つAPIを書き込むことです。このAPIには、access_tokenがパラメータとして使用されます。次に、アクセストークンを手作業で検証し、401を返すか、PDFをストリームします。

が、これが最善の解決策であれば、どのように私はAPI内access_tokenを検証しない、これより良い解決策はありますか?

+0

クライアント認証情報OAuthフローを使用できます。ステップ1、identityserver3でクライアントとしてWeb Apiを作成します。ステップ2では、クライアントIDとシークレットを使用してIDサーバーからアクセストークンを取得します。ステップ3、Web APIへのリクエストで、 "ベアラ"トークンを持つ認証ヘッダーを追加します。ここを見て:http://www.developerhandbook.com/c-sharp/create-restful-api-authentication-using-web-api-jwt/ – TejSoft

+0

だから、問題はIdSvrよりジャバスクリプト/ XHRの問題の詳細ですか?生成されたファイルを返すAPIがあり、通常の方法で保護されたエンドポイントです。そのエンドポイントからの戻り値は 'FileContentResult'です。 AJAX呼び出しでそのエンドポイントを呼び出そうとすると、通常の[javascript-download-a-file](https://stackoverflow.com/questions/16086162/handle-file-download-from-ajax-post)のフープをジャンプします。 – Mashton

答えて

0

このアプローチは全く問題ありません。

あなたはトークンを検証するためのミドルウェアを使用したい場合は - それはあなたが使用しているミドルウェアによって決まります。プレーンなMicrosoft JWTベアラミドルウェアには、クエリ文字列からトークンを取得するために実装できるイベントがあります。

アイデンティティサーバートークン検証ミドルウェアはまた、あなたが代替/複数の場所からのトークンを取得することができますTokenRetriever性質を有しています。

関連する問題