我们在 Intranet 站点上遇到了类似的问题,最终从集成 Windows 身份验证切换到直接在站点上请求他们的网络用户名/密码。这样我们就可以将它们重定向到 HTTPS 或其他类似的东西,而不必担心身份验证弹出窗口何时出现。
我们有一些与此类似的代码(假设您使用的是 ASP.NET)对用户进行身份验证,然后我们将身份验证状态存储在 cookie 中。
public static bool AuthenticateUser(string username, string password)
{
System.DirectoryServices.DirectoryEntry _entry = new System.DirectoryServices.DirectoryEntry(ldap_path, username, password, System.DirectoryServices.AuthenticationTypes.Delegation);
bool _authenticated = false;
try
{
Object _o = _entry.NativeObject;
_authenticated = true;
}
catch
{
_authenticated = false;
}
finally
{
// Avoids the "multiple connections to server not allowed" error.
_entry.Close();
_entry.Dispose();
}
return _authenticated;
}
通过处理应用程序中的所有身份验证而不是依赖于 IIS,它最终为我们节省了大量的头痛和挫败感。