我已经使用 WIF 设置了 STS,并希望公开用户是否已登录,以便 RP 可以确定用户是否已登录,而无需用户重定向到 STS 并返回。如果用户已登录,RP 上将发生不同的流程,因此在此过程中了解但不强制登录很重要。
我的计划是在 STS 上创建一个简单的通用处理程序,当通过 HttpWebRequest 命中时,返回 context.User.Identity.IsAuthenticated 的输出(其中 context 是传递给 ProcessRequest 方法的 HttpContext :
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
if (context.User != null && context.User.Identity.IsAuthenticated)
context.Response.Write("True");
else
context.Response.Write("False");
}
我的问题是,如果用户已登录并且我直接点击此处理程序,它会返回 True,但如果我以编程方式从 RP 中点击处理程序,它会返回 False(实际上 Identity 为空)。我这样做是完全错误的吗?从 RP 中点击处理程序将返回 RP 上用户的状态,还是我做错了什么?