2016-07-28 11 views
1

私は奇妙な問題に直面しています。 Azure App Service(Webサイト)でAsp.net Core WebApiプロジェクトを実行しています。私はChromeでDHCプラグインを使用しています。私のサービスもAADで動作しています。AzureのウェブサイトRest ApiはGETのみ受け付け、POSTは403を返します。おそらくCORS

私はGETメソッドをうまく(ログイン後)要求することができます。しかし、私がPOSTを要求すると、私は403応答を得ました。ログの中を見ると、私は見ることができます。この

2016-07-28T08:14:26 PID [x]は冗長受信した要求:POST https://blahblah.azurewebsites.net/api/build/beep/

2016-07-28T08:14:26 PIDを[ x]サイト 'blah.azurewebsites.net'の冗長 'AppServiceAuthSession' Cookieが見つかりました。長さ:856

2016-07-28T08:14:26 PID [x]は情報の送信応答:403.60禁断の

2016-07-28T08:14:26 PID [x]は警告クロスサイトリクエストフォージェリユーザー '[email protected]'のためにreferer ''から検出されました!

私はAsp.net Core 1.0を使用しています。私は自分のコード(AllOrigin AllHeader)でCORSを有効にしているだけでなく、AzureウェブサイトのCORSにはすべての起点を受け入れるはずの '*'のエントリがあります。ログ・ストリームはWebサイトにも当てはまらないようですが、Azureの何かがリクエストをブロックします。

助けが必要ですか?

編集: 成功GETメソッド

2016-07-28T20:24:35 PID [22880]冗長受信した要求:GET https://blah.azurewebsites.net/api/build/beep/

2016-07-28T20:24:35 PID [22880]サイト 'blah.azurewebsites.net'のVerbose Found 'AppServiceAuthSession' Cookie。長さ:876.

2016-07-28T20:24:36 PID [22880] Verbose Authenticated [email protected] 'Session Cookie'認証を使用しました。

+0

JavaScriptクライアントが認証/認可モジュールのCSRF保護によってブロックされているように見えますが、現在のところCORS設定についてはわかりません(多分そうすべきです)。あなたのシナリオでは、エンドユーザは元々どのようにログインしていましたか? –

+0

私はAADと私の企業の資格情報で認証するためにクロムを使います。ログイン後、AzureはGETリクエストをうまくやってくれます。私は自分の投稿を編集して、成功したGETリクエストのログも含めました。 –

答えて

2

現在のところ、CORS設定についてはわからない認証/認可モジュールのCSRF保護によってJavaScriptクライアントがブロックされているようです。

この問題を回避する最も簡単な方法は、クライアントの設定で HTTPヘッダーをカスタムに追加することです。私たちの組み込みのCSRF保護が探していることの1つは、クライアントがブラウザであるかどうかです。ほとんどすべての主要なブラウザは、ユーザエージェント文字列として "Mozilla/..."を使用しています。これを他のものに変更して、ブラウザではないことを明確にして、POSTリクエストが正常に実行されるようにします。

+0

これが正しい答えであることを確認できます。設定User-Agentは 'foo'のように動作します。おかげでクリス –

関連する問題