0

我在 .net 4.5 中创建了一个 MVC 4 应用程序并安装了身份和访问工具,以便我可以创建一个声明感知应用程序。我配置了应用程序,使其使用 2012 附带的新 LocalSTS,因此它不会像 2010 年那样创建 STS 网站。

如何在我的应用程序中支持注销方案?有没有我可以调用的方法FormsAuthentication.SignOut

4

3 回答 3

0

将 cookie 更改为持久性 cookie 并在注销单击或会话结束时使 fedauth cookie 过期怎么办?

RP 上的持久 Cookie:

<microsoft.identityModel>
      <federatedAuthentication>
        <wsFederation
            persistentCookiesOnPassiveRedirects="true" />
        <cookieHandler 
          persistentSessionLifetime="60.0:0:0" />
      </federatedAuthentication>
</microsoft.identityModel>

并让 Cookie 过期

    var c = Request.Cookies["FedAuth"];
    c.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(c);

    c = Request.Cookies["FedAuth1"];
    c.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(c);

在此之后您将需要重定向。

于 2013-10-03T13:38:02.287 回答
0

这真的很简单,只需调用 WSFederationAuthenticationModule 上的 SignOut 方法即可:

FederatedAuthentication.WSFederationAuthenticationModule.SignOut("/MyPostSignoutRedirectUrl");
于 2012-12-16T18:15:31.470 回答
0

要处理注销请求,请执行以下步骤:

  1. 点击退出链接后,清除联合cookie:System.Web.HttpContext.Current.Response.Cookies.Remove(stateKey);

  2. 使用 WS-Federation 退出参数作为操作将浏览器重定向到模拟颁发者:

https://RelyingParty/SsoLogout.aspx?wa=wsignout1.0&wreply=...

WS-Federation 命令——wa=wsignout1.0 用于从颁发者注销。

  1. 从 cookie 中检索 RP 列表并将注销清理命令发送给它们中的每一个:
https://RelyingParty1/SsoLogout.aspx?wa=wsignoutcleanup1.0,
https://RelyingParty2/SsoLogout.aspx?wa=wsignoutcleanup1.0,
https://RelyingParty3/SsoLogout.aspx?wa= wsignoutcleanup1.0

这允许所有依赖方执行注销操作。

它的工作方式如下:

wa GET 参数中定义的 wsignout1.0 和 wsignoutcleanup1.0 操作很容易被遵守 WS-Federation Passive Requestor Profile 的依赖方理解。这些操作允许从领域中的所有 RP 执行注销操作。

于 2013-08-04T07:13:02.693 回答