【问题标题】:Integrated Windows Authentication & SSL集成 Windows 身份验证和 SSL
【发布时间】:2010-12-08 10:54:46
【问题描述】:

我的 Intranet 上有一个管理网站,目前通过 IIS 使用 集成 Windows 身份验证。我们希望将此应用程序移至公共网站并使用 SSL 对其进行保护,以便我们的用户可以从任何地方访问它。

我一直计划使用 HttpModule 从 http 重定向到 https,但它看起来不适用于集成身份验证(登录弹出窗口出现在重定向之前)。

我是否在 IIS 中使用“需要 SSL”复选框?这似乎对用户不太友好,因为如果用户忘记使用 https URL,他们会得到一个漂亮的胖错误页面而不是温和的重定向。

在这种情况下你会怎么做?

【问题讨论】:

    标签: asp.net ssl integrated-security


    【解决方案1】:

    我们在 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,最终为我们节省了大量的头痛和挫败感。

    【讨论】:

    • 感谢您的回复。在得知集成身份验证可能无法在建筑物外工作后,我今天开始倾向于关闭集成身份验证。
    • 您是否有什么特别的原因决定不使用会员提供者的功能并自行推出?
    • 我们已经有一个长期存在的数据结构,它不能与标准的 .NET 成员资格提供程序功能一起使用。我们本可以实现自己的继承自 MembershipProvider 的类,但我们不需要它所需的所有属性和方法,因此我们决定构建自己的精简版本。
    【解决方案2】:

    我每次都将其作为 IIS 问题解决,而不是代码问题:

    • 在 IIS 中创建一个新网站
    • 将其绑定到相同的 IP 地址(和/或主机标头)、SSL 证书和端口 443
    • 将此配置为指向与当前端口 80 站点相同的应用程序根目录
    • 测试以确保直接连接到https://site 会得到预期的响应
    • 重新配置原始站点(仍绑定到端口 80)以使用 HTTP 重定向功能
    • 配置80端口站点重定向到443端口站点;可选地,删除应用程序和虚拟目录映射(以防有人意外禁用重定向)

    从那时起,任何只需在浏览器中输入网站地址的用户都会从 IIS 收到一条闪电般快速的重定向消息,该消息会将他们发送到受 SSL 保护的网站版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      • 2011-10-08
      • 2019-01-31
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      相关资源
      最近更新 更多