我的Intranet上有一个管理网站,目前通过IIS使用集成Windows身份验证。我们希望将此应用程序移至公共网站并使用SSL进行保护,以便我们的用户可以从任何地方访问它。
我一直计划使用HttpModule从http重定向到https,但它看起来不适用于集成身份验证(登录弹出窗口出现在重定向之前)。
我是否坚持使用IIS中的“require SSL”复选框?这似乎不是所有用户友好的,因为如果他们忘记使用https URL,用户会得到一个很好的胖错误页面而不是温和的重定向。
在这种情况下你会做什么?
答案 0 :(得分:6)
我每次都解决这个问题,而不是代码问题:
从那时起,任何只是在浏览器中输入网站地址的用户都会从IIS获得一条闪电般的重定向消息,将其发送到受SSL保护的网站版本。
答案 1 :(得分:3)
我们在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,最终为我们节省了大量的头痛和挫败感。