【问题标题】:Unable to sign out of ADFS 3.0 on IE无法在 IE 上退出 ADFS 3.0
【发布时间】:2016-12-09 11:54:22
【问题描述】:

我们开发了一个使用 ADFS 的 MVC/Angular 应用程序。由于我们使用的是 Angular,我们必须围绕 ADFS 创建一个包装器来捕获令牌,以便我们可以将其用作声明,以便 Angular 可以访问它。

大部分工作都是通过以下方法完成的:

 public async override Task Invoke(IOwinContext context)
    {
        if (context.Request.Path.StartsWithSegments(new PathString(ConfigurationManager.AppSettings["AuthorizationCodeResponsePath"])))
        {
            var authorizationCode = context.Request.Query[ConfigurationManager.AppSettings["AuthorizationCodeResponseParameter"]];

            var token = this.RequestToken(
                this.Options.TokenEndpoint,
                new Uri(this.Options.ApplicationUri, ConfigurationManager.AppSettings["AuthorizationCodeResponsePath"]),
                this.Options.ClientId,
                authorizationCode);

            var principal = this.ValidateToken(token, this.Options.Audience, this.Options.Issuer, this.Options.Certificate);

            this.AddTokenToPrincipal(principal, token);

            this.SignIn(context.Authentication, principal);

            context.Response.Redirect(this.Options.RedirectPath.Value);
        }
        else if (context.Request.Path.StartsWithSegments(new PathString(ConfigurationManager.AppSettings["SignOutPath"])))
        {
            if (context.Request.Query.Any(q => q.Key == "post_logout_redirect_uri"))
            {
                context.Response.Redirect(ConfigurationManager.AppSettings["ADFS"] + "/adfs/ls/?wa=wsignoutcleanup1.0");
            }
            else
            {
                this.SignOut(context.Authentication);
            }
        }
        else
        {
            await this.Next.Invoke(context);
        }
    }

基本上在登录时我们将登录 ADFS,ADFS 将尝试重定向到我们在第一个 if 块中捕获的特定 URL,我们获取授权代码并从此处请求令牌添加声明然后登录。

问题在于退出,应用程序发出退出请求,URL 在第二个块中被捕获,并发出退出请求,该请求也尝试重定向到 ADFS 退出页面。我可以看到 .AspNet.Federation 已过期/已删除,但在重新加载页面时,应用程序只请求一个新的 cookie。这在 Chrome/Firefox 上运行良好,如果我在发出退出请求之前清除 IE 的 cookie,它将成功完成退出。有什么我可能在这里遗漏的吗?

【问题讨论】:

    标签: javascript angularjs cookies adfs adfs3.0


    【解决方案1】:

    使用以下命令更正此问题:

    document.execCommand("ClearAuthenticationCache")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 2020-03-03
      • 2015-12-20
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      相关资源
      最近更新 更多