シナリオ
IIS Webサーバー。 .Net Webサービスではありません。 WebサービスへのPOST。CORS PreFlightが資格情報を送信しない、サーバーが認証されていないユーザーを拒否したい場合
。クロスドメイン方式でWebサービスに接続するネットWebアプリケーション。
要件
Webサーバーは、シングルサインオンで認証されたActive Directoryユーザーが必要とする必要があります。
飛行前のOPTIONSテストでは認証済みのリクエストを受け入れることはできますが、OPTIONSテスト後のPOSTを含む他のリクエストには認証済みのユーザーが必要です。
私は、WebアプリケーションとWebサーバの間に働く成功CORSクロスドメインコールを持っている:私はでてる
。 OPTIONS呼び出しが正常に動作していて、その後のPOST呼び出しが正常に動作していることがわかります。
問題:
OPTIONS呼び出しは資格情報を送信しません。この問題を回避するために、私たちはウェブサイトレベルで匿名ユーザーを許可します。それ以外の場合は、401 Unauthorizedエラーが発生します。
しかし、いったんこれを行うと、POSTでは認証が不要になります。実際には、Webサーバーログには、資格情報が投稿内にまったく送信されていないことが表示されます。それは容認できません。
(a)OPTIONS呼び出しがActive Directory認証情報を送信するように強制するか、(b)Webサーバーが認証されていない非OPTIONS要求をすべて拒否する必要があります。
設定:ソリューション・パスについては
(a)に、私はそれが必要とするためにかなりのゲームです。
ソリューションパス(b)の場合、IIS設定またはweb.configの設定が優先されます。 WebサーバーはPythonで書かれていますが、サーバー上で実際の作業を行うPythonコードを呼び出すc#webserverコードユニットを作成することができます。
アイデア?
ありがとうございました。私が読んだCORSの記事のなかには、資格情報が「デフォルトで」オプション要求で送信されていないと言われています。 IISが匿名オプションの要求のみを受け入れるように設定する方法はありますか? 私たちが仕事のオプションを得るために見つけた唯一の方法は、資格情報が投稿に送られるのを止めることです。 –
申し訳ありませんが、私はIISの設定について何も知りません。私は、クライアント側からこれを回避する方法がないことを明確にするために答えました。 – sideshowbarker