我有与 ADFS 集成的 MVC 应用程序。
概括
我在调用 ADFS 身份验证之前设置会话。ADFS 调用返回后,该会话丢失了我之前设置的。
详细说明
步骤 1 调用应用程序 URL
https://hrcentral/mainmodule/expense/index
步骤 2 上述调用将请求重定向到 WIF 组件,该组件是我的应用程序中的 httphandler,因此 url:https://hrcentral/federationMetaData/wif.axd ?ReturnUrl= https://hrcentral/mainmodule/expense/index
Web.config 我有如下设置用于重定向
<authentication mode="Forms">
<forms loginUrl="~/FederationMetadata/WIF.axd" name="smartForms" />
</authentication>
第 3 步:在 WIF.axd httphandler 中设置一个会话,从查询字符串读取返回的 url
HttpContext.Current.Session["ReturnUrl"]="https://hrcentral/mainmodule/expense/index";
设置会话后,它将重定向到 ADFS
第 4 步 ADFS 身份验证和 POST 请求 https://hrcentral/federationMetaData/wif.axd 将在同一个 WIF 处理程序中发送。我们有一个条件来检查请求是否为 POST。由于此请求是 POST,先前存储的会话包含 ReturnUrl 并尝试重定向回并登陆到我们的应用程序。
现在的问题是在 wif.axd 中从 ADFS 重定向后无法访问在步骤 3 中设置的会话 (HttpContext.Current.Session["ReturnUrl"]=ReturnUrl)。一般来说,任何会话,在我们的应用程序中设置的任何会话在从 ADFS 重定向后都会丢失。
之后将进行身份验证,它将重定向到https://hrcentral/mainmodule/expense/index
设置会话