STS身份验证 - MVC站点

时间:2012-06-09 15:39:44

标签: asp.net-mvc authentication wif

我有两台服务器:STS和Web。在STS服务器上,我打电话给:

FormsService.SignIn(model.UserName, false);

下一行,我查一下:

User.Identity.IsAuthenticated

这是设置为TRUE。然后我重定向回我的Web服务器,在我点击的控制器中,我检查:

User.Identity.IsAuthenticated

这设置为FALSE。

What could cause this?

更新:我也尝试将STS网站移到Web服务器上。我得到了同样的错误/问题

更新:我忘了提到我们的DEV服务器运行正常。其配置完全相同(服务器名称和证书指纹除外)。这两个服务器之间唯一不同的是,一个(DEV)使用自签名证书并且在我们的防火墙内。另一个(QA)正在使用官方(thawte)证书,并且是我们的防火墙。此证书的通用名称与服务器名称不匹配(因此可以在我们的服务器场中共享)。因此,当我们访问网站时,我们使用https:// [commonname] .com / web而不是https:// [servername] / web。我尝试了后一种方法(我得到名称不匹配的证书错误)但仍然有相同的结果。

此外,我可以直接访问STS网站并在那里登录。

3 个答案:

答案 0 :(得分:0)

ASP.NET身份验证默认基于cookie。 Cookie存在于Web域内。 所以,如果您安装了两个这样的服务器:

  1. http://www.web.com
  2. http://www.sts.com
  3. WEB服务器无法读取STS设置的cookie

    有两种可能的解决方案:

    1. 将两台服务器都实施为子域
    2. 将身份验证票证存储在URL而不是cookie
    3. 选项1 按如下方式移动服务器:

      1. http://www.web.yourdomain.com
      2. http://www.sts.yourdomain.com
      3. 更新web.config以将Cookie范围扩展到yourdomain.com:

        <authentication mode="Forms">
              <forms domain=".yourdomain.com"/>
        </authentication>
        

        要在网址中存储故障单,请查看此文章 - http://www.codeproject.com/Articles/2796/Cookieless-ASP-NET-forms-authentication

        更新:似乎我没有得到STS代表安全令牌服务。我的回答是不相关的。 :(

答案 1 :(得分:0)

STS服务器重定向时,您必须使用AutoPost表单进行重定向,该表单会将token提交至Relying party

Relying party收到令牌时,它会针对该用户创建cookie。

因此,下次您将在依赖方检查User.Identity.IsAuthenticated时,它会返回True

通过以下链接了解更多信息,

http://chris.59north.com/post/2013/03/27/Claims-based-identities-in-ASPNET-MVC-45-using-the-standard-ASPNET-providers.aspx

答案 2 :(得分:0)

将RP移动到其他服务器时,我们遇到了同样的问题。事实证明,我们需要进入应用程序池 - &gt;高级设置 - &gt;设置'加载用户配置文件'=真。

之后,一切都在新服务器上运行,User.Identity.IsAuthenticated从STS返回后返回'true'。