加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 太多的Cookie OpenIdConnect.nonce导致错误页面“错

发布时间:2020-12-15 19:23:13 所属栏目:asp.Net 来源:网络整理
导读:我在C#ASP MVC Web应用程序中使用OWIN / OAuth与OpenId Connect身份验证(Microsoft.Owin.Security.OpenIdConnect).使用Microsoft帐户的SSO登录基本上可以工作,但是不时会在浏览器上显示错误请求 – 请求太长的错误页面. 我发现这个错误是由于太多的cookie造
我在C#ASP MVC Web应用程序中使用OWIN / OAuth与OpenId Connect身份验证(Microsoft.Owin.Security.OpenIdConnect).使用Microsoft帐户的SSO登录基本上可以工作,但是不时会在浏览器上显示错误请求 – 请求太长的错误页面.

我发现这个错误是由于太多的cookie造成的.删除Cookie可以帮助一段时间,但过了一会儿问题回来了.

导致问题的cookie是从OpenId框架设置的,所以有几十个cookie,名字叫OpenIdConnect.nonce.9oEtF53WxOi2uAw ……..

这不是SPA应用程序,但是某些部分会使用ajax调用定期刷新.

解决方法

原来,根本原因是Ajax调用.

有问题的流程是

1)OAuth cookie在一段时间后过期

2)到期通常会将页面重定向到login.microsoft.com来刷新cookie.在此步骤中,OAuth框架将新的nonce cookie添加到响应(每次)!

3)但是Ajax不处理域外的重定向(跨域到login.microsoft.com).但是cookie已经附加到页面.

4)下一次定期的Ajax电话重复,导致“nonce”cookie快速增加.

我不得不扩展“OWIN OpenId”框架设置代码,以不同方式处理Ajax调用,以防止重定向并停止发送Cookie.

public void ConfigureAuth(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
    app.UseCookieAuthentication(new CookieAuthenticationOptions());

    app.USEOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            ClientId = clientId,Authority = authority,Notifications = new OpenIdConnectAuthenticationNotifications
            {
                RedirectToIdentityProvider = ctx => 
                {
                    bool isAjaxRequest = (ctx.Request.Headers != null && ctx.Request.Headers["X-Requested-With"] == "XMLHttpRequest");

                    if (isAjaxRequest)
                    {
                        ctx.Response.Headers.Remove("Set-Cookie");
                        ctx.State = NotificationResultState.HandledResponse;
                    }

                    return Task.FromResult(0);
                }
            }
        });
}

Ajax调用者也必须进行调整,以检测401代码并执行全页刷新(这导致对Microsoft权限的快速重定向).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读