2017-01-31 22 views
0

現在、私はIDフレームワークを使用してWebAPIプロジェクトを作成しており、APIで認証するときに返されるセットアップトークンを持っています。Web APIトークンを使用してMVCクライアントを認証

これで、ユーザーがWebAPIを呼び出してバックエンドデータを取得できるスタンドアロンのMVCアプリケーションを作成する方法を検討しています。

目的は、他のアプリケーションもWeb呼び出しを通じてバックエンドデータとやり取りできるように機能を分離することです。

これで、WebAPIから受け取ったトークンを持つコントローラのAuthorize属性を使用できるように、MVCプロジェクトをセットアップする方法が混乱しています。 Startup.Auth.csのConfigureAuthメソッドでベアラトークンを有効にする必要があると思います。しかしそれで十分でしょうか?また、クッキー認証を有効にする必要がありますか?

答えて

1

MVCとWeb Apiは、認証に関して基本的に異なります。 Web Apiでは、ベアラトークンをリクエストのヘッダーに設定する必要がありますが、すべてのAPIリクエストがクライアントによってプログラムによって実行されるため、問題はありません。つまり、リクエストを認証するためにクライアントを設定する人間の介入があります。正しく。

MVCは、一般的にWebブラウザ経由でアクセスされ、要求ヘッダーにベアラトークンを自動的に付加しないという点で、異なる獣です。それは何ですか doはサーバーによって設定されたパスクッキーです。そのため、Cookie認証はMVC Webアプリケーションに最も一般的に使用されます。

あなたがすべきことは、MVCサイトのCookie認証を有効にし、サインインアクションを設定してWeb API経由で認証することです。 Web APIから有効な認証情報が返ってくると、Identity API経由でユーザーに手動でサインインすることができます。

await SignInManager.SignInAsync(user); 
+0

OKです。それで、Authorize属性を利用するには、同じCookieでログインした後でクレームとロールをリクエストして保存するだけですか? – foop

+0

本質的に、はい。 –

+0

また、ApplicationSignInManager、ApplicationUserManagerのインスタンスの新しいインスタンスを作成する必要がありますか?しかし、アイデンティティDbと直接通信したくないので、私はDbContextの新しいインスタンスを作成したくありません。 APIコールを介してのみ。 – foop

関連する問題