0

この現象に関する回答やドキュメントが見つからないため、これは好奇心のためですが、シナリオは次のとおりです。

2 つのサービス/アプリケーションがあり、どちらも IIS 7 でホストされています。サービス 1 は外部ソース (ブラウザー、フィドラーなど) から HTTPS 要求を受信し、要求を検証するためにサービス 2 を呼び出す必要があるため、サービス 1 は独自のものを作成します。サービス 2 への HTTP を介した新しい別の呼び出し。この呼び出しには、要求オブジェクトに追加された Authorization ヘッダーがあります。 サービス 2 がこの呼び出しを受信すると、認証ヘッダーは削除されたかのようになくなります。したがって、認証は失敗し、これはサービス 1 に戻り、外部呼び出しを拒否します。

このヘッダーと、テストで見た他のヘッダーが HTTP 呼び出しでうまくいかない理由を説明している人はいますか? これは IIS や ASP.NET などの動作ですか? サービス 2 への呼び出しが HTTPS の場合、ヘッダーは問題なく通過します。私は次のようにリクエストを生成しています:

string uriendpoint = "http://service.test.com/testService.svc/authtest";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriendpoint);
request.Credentials = CredentialCache.DefaultCredentials;
var authField = MD5Hash("test:test!!2013");
request.Headers.Add(HttpRequestHeader.Authorization, authField.ToString());
request.Method = WebRequestMethods.Http.Get;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
4

2 に答える 2

0

ほとんどの場合、「サービス 2」には「受信リクエストが HTTP の場合、認証ヘッダーを無視する」のようなコードがあります。HTTP トラフィックは非常に簡単にスニッフィングされて再生される可能性があるため、これは非常に合理的な動作です。

于 2013-06-21T23:59:11.390 に答える
0

私の同僚は、IIS の「URL Rewrite」モジュールがこの動作の根本原因であることに気づきました。http リクエストを https に永続的にリダイレクトするようにセットアップしましたが、このリダイレクトでヘッダーがドロップされます。IIS がこれを行うのは少し奇妙ですが、この問題を回避するために別の方法を試してみようと思います。

于 2013-06-24T16:43:05.323 に答える