我正在尝试实施SSO跨域解决方案。
当用户尝试登录域A时,他被重定向到网站上的单一标志,该标志将验证他的凭据并在该域上写一个认证cookie(让我们称之为SSO域)。我使用以下代码在cookie上写:
public static void WriteAuthenticationTokenToCookie(HttpContextBase httpContext, string authenticationToken)
{
HttpCookie authenticationCookie = new HttpCookie("_token", authenticationToken);
authenticationCookie.Expires = DateTime.Now.AddMinutes(30);
httpContext.Response.Cookies.Set(authenticationCookie);
}
稍后,用户尝试访问域B上的经过身份验证的页面。用户将被重定向到SSO域,该域将验证身份验证cookie是否具有任何值并将其返回到域B,它已经存在。
当我打开浏览器检查器工具时,我可以看到SSO网站上的身份验证cookie已设置,因为我登录了域A,但是,当域B重定向到SSO域时,我使用代码HttpContext。 Request.Cookies.Get(“_ token”)尝试获取cookie的值,但无济于事。就好像cookie不存在一样。 在进一步检查时,我注意到该请求只提供了asp.net会话cookie。
我的目标是在SSO域上获取cookie的价值,遗憾的是我无法完成。