Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Chrome未在我的OpenID连接工作流(ASP.NET OWIN)中保存/返回当前cookie_Asp.net Mvc_Cookies_Owin_Openid Connect_Auth0 - Fatal编程技术网

Asp.net mvc Chrome未在我的OpenID连接工作流(ASP.NET OWIN)中保存/返回当前cookie

Asp.net mvc Chrome未在我的OpenID连接工作流(ASP.NET OWIN)中保存/返回当前cookie,asp.net-mvc,cookies,owin,openid-connect,auth0,Asp.net Mvc,Cookies,Owin,Openid Connect,Auth0,我正在尝试让OpenID连接身份验证为我的旧版ASP.NET MVC应用程序工作。我的ASP.NET MVC应用程序将作为中继方,我们的一个业务合作伙伴将作为身份提供者 为了熟悉我需要做的事情,我在Auth0上创建了一个帐户,并为Web应用程序创建了一个新应用程序。然后我下载了他们的。我已经完成了所有设置,并且能够通过Microsoft Edge和Firefox成功进行身份验证。但Chrome的工作流程如下: 访问本地主机:3000 尝试访问受保护的资源,这会将我重定向到localhost:30

我正在尝试让OpenID连接身份验证为我的旧版ASP.NET MVC应用程序工作。我的ASP.NET MVC应用程序将作为中继方,我们的一个业务合作伙伴将作为身份提供者

为了熟悉我需要做的事情,我在Auth0上创建了一个帐户,并为Web应用程序创建了一个新应用程序。然后我下载了他们的。我已经完成了所有设置,并且能够通过Microsoft Edge和Firefox成功进行身份验证。但Chrome的工作流程如下:

  • 访问本地主机:3000
  • 尝试访问受保护的资源,这会将我重定向到localhost:3000/Account/Login
  • /Account/Login创建质询,它做两件事:(1)创建Nonce cookie,(2)将用户重定向到Auth0的
    /authorize
    端点
  • 我已成功登录Auth0的登录屏幕
  • 向localhost:3000上的
    /callback
    端点发出POST请求
  • 我看到一个黄色的死亡屏幕,上面有以下信息:
  • IDX21323:要求为“System.Boolean”。OpenIdConnectProtocolValidationContext.Nonce为null,OpenIdConnectProtocol.ValidatedToken.Payload.Nonce为null。无法验证nonce。如果不需要检查nonce,请将OpenIdConnectProtocolValidator.RequireNonce设置为“false”。注意:如果找到“nonce”,将对其进行评估。 通过检查HTTP流量,我发现Chrome的问题是在步骤(3)中,当服务器在302重定向中设置Nonce cookie时,Chrome没有保存它。因此,当执行步骤(5)时,浏览器不向服务器发送任何Nonce信息,验证失败

    这可以通过步骤(3)和(5)中的HTTP流量来证明。下面是步骤(3)中的localhost响应。您可以看到,它告诉浏览器存储Nonce cookie:

    HTTP/1.1 302 Found
    Cache-Control: private
    Location: https://whatever.us.auth0.com/authorize?client_id=gYb3FOL5OWK419L8...
    Set-Cookie: OpenIdConnect.nonce.fRunx5CPoGdhTRM3mgqpn62m9SFkH4AszKWpOOk8LV0%3D=T1NPQjNlYTgtQ...; path=/; expires=Sat, 18-Jul-2020 20:47:59 GMT; HttpOnly; SameSite=None
    
    POST http://localhost:3000/callback HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
    
    code=DANVniZ296OzQW...
    
    但是在我被重定向到Auth0之后,我可以检查Chrome的cookies,它在本地主机的cookies集合中没有Nonce cookie。此外,当第(5)步点击时,浏览器请求看起来是这样的-没有提到Nonce cookie:

    HTTP/1.1 302 Found
    Cache-Control: private
    Location: https://whatever.us.auth0.com/authorize?client_id=gYb3FOL5OWK419L8...
    Set-Cookie: OpenIdConnect.nonce.fRunx5CPoGdhTRM3mgqpn62m9SFkH4AszKWpOOk8LV0%3D=T1NPQjNlYTgtQ...; path=/; expires=Sat, 18-Jul-2020 20:47:59 GMT; HttpOnly; SameSite=None
    
    POST http://localhost:3000/callback HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
    
    code=DANVniZ296OzQW...
    
    这会导致上述错误

    (当我使用Edge或Firefox检查HTTP流量时,在步骤(5)中,我看到浏览器发送Nonce cookie,而Chrome中完全没有该cookie。)

    我使用的是Chrome 84版和Windows 10。我也在家里的一台装有Windows7(和Chrome84)的旧电脑上试过,体验到了完全相同的行为

    这里发生了什么,更重要的是,我如何让它工作?我最初的假设是,可能是SameSite cookie问题,但我不认为是这样,因为我可以看到cookie一开始并没有被创建(不是它存在,而是没有被重定向到localhost)。此外,Nonce cookie具有
    SameSite=None
    ,所以这不重要,对吧


    谢谢

    在同事的帮助下解决了这个问题

    如果流量通过HTTP,Chrome在使用
    SameSite=None
    时不会保存cookie。需要将Visual Studio设置为使用HTTPS。一旦我这么做了,事情就如预期的那样进行了