IsAuthenticated是真的但是HttpContext.Current.User.Identity.IsAuthenticated是假的

时间:2015-05-25 12:32:56

标签: asp.net single-sign-on saml-2.0 adfs2.0

我们正尝试使用SAMFS与我们的客户站点使用ADFS实现单点登录(sso)。我已成功设置ADFS,当我访问../adfs/ls/idpinitiatedsignon.aspx页面时,它显示“登录到这个网站“单选按钮,它重定向到客户网站,并要求输入用户名和密码,一旦输入客户的网站用户名和密码,然后它返回到idpinitiatedsignon.aspx并说”你已登录“并显示退出按钮。但是我无法从idpinitiatedsignon.aspx中的HttpContext.Current.User获取登录用户的详细信息,因为HttpContext.Current.User.Identity.IsAuthenticated为false,但IsAuthenticated为真。那么我怎样才能获得登录的用户信息?

1 个答案:

答案 0 :(得分:1)

因为当您调用FormsAuthentication.SetAuthCookie(txtUsername.Value,true)时;您将密钥存储在客户端的cookie上。为此,您需要对用户做出响应。而对于要填充cookie的HttpContext.Current.User.Identity,还需要一个请求。

简而言之,您的计划如下所示:

  • 客户端发送他的用户名和密码。
  • 服务器获取并检查它。
  • 如果它们有效,服务器会将Set-Cookie标头发送给客户端。
  • 客户收到并存储它。对于每个请求,客户端都会将cookie发送回服务器。