2016-11-30 11 views
1

私は https://github.com/Azure-Samples/active-directory-dotnet-webapp-wsfederation起動WEBAPIなしアクセス制御 - 許可 - 起源ヘッダが要求されたリソース上に存在しないスロー

ここで提供WSFederationを経由して、私のMVC 4.6のWebアプリにAzureのADを統合するAzureのサンプルを追跡しようとしていますこのサンプルは、期待どおりに動作します。しかし、WebApiコントローラを同じMVCプロジェクトに追加し、[Authorize]でデコレートするとエラーが発生します。この新しく追加されたWebApiコントローラには、GETメソッドのためのajaxリクエストがあります。

エラーは次のとおりです。あなたの助けのための

XMLHttpRequest cannot load https://login.microsoftonline.com/85c96496-fbc6-4bf3-bfcc-fb51ca874527/wsfe…UIWNgv-EANzWADAQPCOqF--3c7KGt6G21ucvLkce_wMcwVguKz62ioyGPxQg&wa=wsignin1.0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost:4279' is therefore not allowed access. 

ありがとう!

答えて

0

Web APIにAuthorizeタグを追加した後、このWeb APIをリクエストするためにAjaxを呼び出す前に、Webアプリケーションにサインインする必要があります。その後、Ajaxリクエストは認証のためにクッキーを自動的に送信し、正しい結果を返します。

ログインする前にWeb APIにAjaxリクエストを呼び出すと、Web APIが保護され、WebアプリケーションがAzure ADと統合されているため、リクエストはAzure ADのログインページにリダイレクトされます許可されたクロスドメイン要求。これがこの問題の根本的な理由です。

+0

保護されたwebapiコントローラは、他の(保護された)MVCコントローラと同じように自動的にログイン画面にリダイレクトできませんか? – Sam

+0

Ajaxを使用していたので、Azure ADのログインページ(エラーメッセージに記載されているリンク)へのリクエストは既にリダイレクトされていたため、ユーザーのログインを有効にすることはできません。ブラウザでWeb APIを直接リクエストできます。ユーザーをログインページにリダイレクトする必要があります。 –

+0

私のシナリオはどのように扱うべきですか? Webアプリケーションのユーザーは、ajaxまたはサーバー側のMVCコントローラーアクションを介して任意の順序でWebApiを呼び出すことができます。 MVCコントローラを最初に使用するように強制することはできません。あなたのアドバイスをありがとう。 – Sam

関連する問題