Asp.net mvc Chrome未在我的OpenID连接工作流(ASP.NET OWIN)中保存/返回当前cookie
我正在尝试让OpenID连接身份验证为我的旧版ASP.NET MVC应用程序工作。我的ASP.NET MVC应用程序将作为中继方,我们的一个业务合作伙伴将作为身份提供者 为了熟悉我需要做的事情,我在Auth0上创建了一个帐户,并为Web应用程序创建了一个新应用程序。然后我下载了他们的。我已经完成了所有设置,并且能够通过Microsoft Edge和Firefox成功进行身份验证。但Chrome的工作流程如下: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
/authorize
端点/callback
端点发出POST请求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。一旦我这么做了,事情就如预期的那样进行了