验证Windows用户后,MVC3转发到表单Auth站点

时间:2011-08-12 15:10:25

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

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

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

我已经尝试了一些混合的Windows / Forms身份验证解决方案,但是它们不能与MVC3和IIS7一起使用,因为它们中的大多数都是非常糟糕的,并不适用于后来的技术。

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

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

提前致谢, 杰夫

2 个答案:

答案 0 :(得分:1)

这是一种方式:

如果您有2个网站:

www.mywebsite.com和intranet.mywebsite.com

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

    FormsAuthentication.SetAuthCookie(currentUser.Name, false);
    
  4. 设置FormsAuthentication cookie后,外部站点将看到用户登录时的方式与使用外部站点上的FormsAuthentication登录时相同。

    P.S。还要确保在所有计算机上安装KB2416472(其表单身份验证漏洞更新)

答案 1 :(得分:0)

请在此处查看我的回答:

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

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