随后使用NetworkCredential的HttpWebRequest获得荣誉,最近更改了域密码

时间:2012-11-06 22:56:29

标签: httpwebrequest windows-authentication networkcredentials

我们收集一个Windows域用户名和密码,并通过Web前端将其保存在cookie中。这些凭据以及对特定数据的请求是持续进行的,最终通过Windows服务中托管的WCF调用传递,该服务本身将其作为新的REST调用重定向到IIS下配置了Windows auth的另一个服务器设置。这是使用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时进行身份验证(接收A因为cookie仍旧使用旧密码)。如果我们立即重新启动服务,任何进一步尝试使用HttpWebRequest和NetworkCredential与密码A生成401.为什么旧的域密码在重新启动之前得到尊重?你怎么阻止这种行为?

0 个答案:

没有答案