Google chrome ADB2C刷新令牌挑战不适用于Chrome Android

Google chrome ADB2C刷新令牌挑战不适用于Chrome Android,google-chrome,openid-connect,azure-ad-b2c,Google Chrome,Openid Connect,Azure Ad B2c,我正在使用标准的OIDC.NET库向ADB2C提出质询请求。据我所知,这会自动尝试使用缓存中的刷新令牌登录,并在不重新请求凭据的情况下获得授权 除了Android上的Chrome浏览器之外,这似乎工作得非常好。无论我尝试什么,此浏览器似乎都会丢失刷新令牌,因此在大约1小时后,它会再次开始请求凭据。我在ChromeWeb/mac、edge、IE、safari、FF上反复检查了这一点,它们的行为都如预期的那样保持恒定的登录状态 有什么想法吗?这应该是浏览器独立于我所理解的,但也许我错过了一个技巧

我正在使用标准的OIDC.NET库向ADB2C提出质询请求。据我所知,这会自动尝试使用缓存中的刷新令牌登录,并在不重新请求凭据的情况下获得授权

除了Android上的Chrome浏览器之外,这似乎工作得非常好。无论我尝试什么,此浏览器似乎都会丢失刷新令牌,因此在大约1小时后,它会再次开始请求凭据。我在ChromeWeb/mac、edge、IE、safari、FF上反复检查了这一点,它们的行为都如预期的那样保持恒定的登录状态

有什么想法吗?这应该是浏览器独立于我所理解的,但也许我错过了一个技巧


更新

即使在访问受广告保护的web应用程序时,这似乎也是类似的行为。同样,Chrome会失去刷新功能,但其他浏览器也可以


更新

我在Fiddler中看到了这一点,当时我试图在过期令牌之后访问该站点

铬 设置Cookie:x-ms-cpim-csrf=XXX;domain=auth.mywebsite.com;路径=/;SameSite=无;保护HttpOnly

边缘 设置Cookie:x-ms-cpim-sso:mytenant.onmicrosoft.com_0=XXX;domain=auth.mywebsite.com;路径=/;SameSite=无;保护HttpOnly


是的,这是有区别的,但是为什么以及如何解决呢?

可能是Chrome中SameSite Cookie的问题导致Cookie无法按预期发送。以下是一些帮助您解决问题的建议:

但我认为首先,您应该通过使用诸如捕获流量和验证cookie确实丢失之类的工具来验证这是否是一个相同的问题。一定要在Fiddler中比较不同的浏览器,看看是否有一些差异

请尝试使用匿名模式登录,以便在浏览器中没有cookie。然后,您应该看到身份提供商和应用程序都在设置cookies

在Fiddler中,您可以在Filter选项卡下启用图片中的第一项来标记设置Cookie的响应,以便在设置Cookie时更容易检测。

您是否在前端使用MSAL.js?不,在.NET core mvc应用程序中使用它,并将此库与默认的内存内令牌缓存一起使用。我认为您可能是对的,这与此有关。实际上,我已经实现了您提到的第一个链接,但这似乎发生在较新版本的Chrome(v84+)上,这篇文章似乎主要提到iOS和safari黑客。当Chrome浏览器丢失cookie时,关于如何解决这个问题的信息似乎很少。有什么想法吗?更新了我的答案。你知道做这件事的确切步骤吗?我会寻找什么样的饼干?更新了我的答案,希望这是一个可以接受的答案。谢谢。我看到标识域正在设置cookie,它是path=/;SameSite=无;保护HttpOnly。如果我现在删除AspNetCookie(模拟到期)并转到我的应用程序中的安全端点,它确实会挑战身份,我可以看到它正在设置cookie。我将在几个小时后重新测试,看看是否仍然如此。