1

Windows ドメインのユーザー名とパスワードを収集し、Web フロント エンドを介して Cookie に保存します。これらの資格情報と特定のデータの要求は、最終的に Windows サービスでホストされている WCF 呼び出しを介して継続的に渡されます。WCF 呼び出し自体は、新しい REST 呼び出しとして、Windows 認証が構成された IIS の下の別のサーバー セットアップにリダイレクトします。これは HttpWebRequest を使用して行われます...

var url = baseServerUrl + "/" + apiCall.Url;
var request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 1000000;
request.Method = apiCall.HttpMethod;
bool credentialsSet = false;
if (!string.IsNullOrEmpty(apiCall.Identity))
{
    // split into Domain\User\Password
    var parts = apiCall.Identity.Split('\\');
    if (parts.Length == 3)
    {
        request.Credentials = new NetworkCredential(parts[1], parts[2], parts[0]);
        credentialsSet = true;
    }
}
// Then more code submitting the request ...

したがって、Cookie ドメイン パスワード A に保存する場合は、上記の方法でリクエストを行い (すべて正常に動作します)、Windows ドメイン パスワードを B に変更します。その後のリクエストで見つかったのは、上記のコードです (再び Windows として実行されます)。サービス) は、NetworkCredential で A を受信して​​設定するときに問題なく認証されます (Cookie がまだ古いパスワードでぶら下がっているため、A を受信します)。サービスをすぐに再起動すると、パスワード A で HttpWebRequest と NetworkCredential を使用しようとすると 401 が生成されます。再起動するまで古いドメイン パスワードが使用されるのはなぜですか? どうやってその行動を止めますか?

4

0 に答える 0