首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在IE上注销ADFS3.0

无法在IE上注销ADFS3.0
EN

Stack Overflow用户
提问于 2016-12-09 11:54:22
回答 1查看 467关注 0票数 0

我们开发了一个使用ADFS的MVC/ that应用程序。由于我们使用的是角,所以我们必须在ADFS周围创建一个包装器来捕获令牌,这样我们就可以将它作为一个声明来使用,这样角就可以访问它了。

大部分工作是以下列方法完成的:

代码语言:javascript
复制
 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,它将成功地完成注销。这里有什么东西我可能遗漏了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-15 12:13:06

使用以下命令对此进行了更正:

代码语言:javascript
复制
document.execCommand("ClearAuthenticationCache")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41059905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档