1

IdentityServer Bearer Token Authentication / Access Token Validation で保護された Web API 2 OData v3 サービスがあります。クライアントは SPA アプリケーションです。oidc-token-manager.js ライブラリを使用して認証し、Authorization http ヘッダーのアクセス トークンを XMLHttpRequest を使用して通常の odata crud 操作に渡すことに成功しました。

私の odata サービスは、ファイルのアップロードとダウンロードのストリーミングもサポートしています。ここでも、ファイルをアップロードするために、XMLHttpRequest を使用して Authorization http ヘッダーでアクセス トークンを渡すことができます。

ただし、ファイルをダウンロードするには、href を含むアンカー タグを使用したいと考えています (odata ファイルのダウンロード URL は通常、/odata/myfiles(1)/$value の形式です)。ユーザーがリンクをクリックすると、ファイルがダウンロードされます (odata サービスは content-disposition 添付ヘッダーを応答に追加します)。

ただし、この GET 要求はブラウザーによって作成されるため、この GET 要求の Authorization ヘッダーにアクセス トークンを追加する方法はありません。代わりに、アクセス トークンをクエリ文字列として href の URL に追加することはできますか (いわゆる署名付き URL)。これは良い(安全な)アイデアですか?サーバーでは、Startup.cs で app.UseIdentityServerBearerTokenAuthentication を使用していますが、クエリ文字列と Authorization http ヘッダーでアクセス トークンを検索できますか?

どうもありがとう

レムコ

4

1 に答える 1

1

「プロバイダー」を登録して、トークンが配置されると予想される場所のロジックを制御できます。例えば:

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
{
    // locate the access token from somewhere else
    Provider = new OAuthBearerAuthenticationProvider
    {
        OnRequestToken = async ctx =>
        {
            ctx.Token = await YourCodeToFindTokenInQueryString(ctx.OwinContext.Environment);
        }
    },

   //
};
于 2016-03-23T15:57:32.690 に答える