【问题标题】:MVC3 Forward to Forms Auth site after authenticating Windows User验证 Windows 用户后,MVC3 转发到表单验证站点
【发布时间】:2011-08-12 15:10:25
【问题描述】:

我有一个 MVC3 网站,它现在使用表单身份验证,并且运行良好。该网站要求客户互联网用户拥有我们提供的登录信息。此外,我还有一些用于网站管理的内部用户帐户。

我正在考虑创建第二个 Intranet 站点,网络用户可以导航到该站点将使用 Windows 身份验证对其进行身份验证。然后,我想将 Windows 用户映射到上述内部用户帐户之一。一旦通过身份验证和映射,我想将它们从这个 Intranet 站点重定向到 Internet 站点,并使用我刚刚映射到它们的登录。

我已经尝试了一些混合的 Windows/Forms 身份验证解决方案,但它们不适用于 MVC3 和 IIS7,因为它们中的大多数几乎都是 hack,并不真正适用于后来的技术。

我想知道在走这条路之前这是否值得尝试?

如果是这样... 如何从 Intranet 站点重定向并将登录信息传递到 Internet 站点?

提前致谢, 杰夫

【问题讨论】:

    标签: asp.net-mvc-3 navigation forms-authentication windows-authentication


    【解决方案1】:

    这是一种方法:

    如果您有 2 个网站:

    www.mywebsite.com 和 intranet.mywebsite.com

    1. 确保所有服务器在 machine.config 中具有相同的
    2. 部分中,将 [domain] 属性设置为等于“.mywebsite.com”
    3. 在 Internet 站点上(在 Windows 身份验证识别用户之后),使用 FormsAuthentication API 设置一个 FormsAuthentication cookie,该 cookie 然后将在外部站点上有效。

      FormsAuthentication.SetAuthCookie(currentUser.Name, false);
      

    设置 FormsAuthentication cookie 后,外部站点将看到用户正在登录,就像他们在外部站点上使用 FormsAuthentication 登录一样。

    附:还要确保在所有机器上都安装了 KB2416472(它是表单身份验证漏洞更新)

    【讨论】:

    • 这些站点将在同一台服务器上运行。我可以在每个应用的 Web 配置中设置机器密钥,而不是 machine.config?
    • 我已经完成了这项工作,并且到目前为止它在开发环境中工作。我将在生产环境中进行测试。
    【解决方案2】:

    请在此处查看我的答案:

    How to Elevate Role in ASP.net From anonymous to windows auth?

    我没有在 IIS 7 中找到这样做的方法。这似乎是一个错误的设计,因为 IIS 6 确实允许这样做。

    【讨论】:

    • 这是我发现的解决方案最大的问题。它们都依赖于 IIS6 能够在单个文件上设置不同身份验证类型的特性。
    • 不幸的是……我也在寻找解决方案很长时间。
    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多