1

我有与 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

设置会话

4

0 回答 0