ADB2C刷新令牌挑战在Chrome Android上不起作用

问题描述

我正在使用标准的OIDC .NET库向ADB2C发出质询请求。据我了解,这会自动尝试在缓存中使用刷新令牌登录并获得授权,而无需重新索取凭据。

这似乎绝对可以正常工作,除了在1个浏览器上-Android上的Chrome。无论我如何尝试,此浏览器似乎都会丢失刷新令牌,因此大约1个小时后,它将开始再次要求提供凭据。我已经在Chrome web / mac,edge,IE,safari,FF上进行了交叉检查,它们的行为均符合预期,可保持恒定的登录状态。

有什么想法吗?这应该与我所了解的浏览器无关,但是也许我错过了一个窍门?


更新

即使访问受AD保护的Web应用程序,这似乎也是类似的行为。同样,Chrome无法刷新,但其他浏览器也可以。


更新

在令牌过期后尝试访问网站时,我在fiddler中看到了这一点

Chrome

Set-Cookie:x-ms-cpim-csrf = XXX; domain = auth.mywebsite.com;路径= /; SameSite = None;安全; HttpOnly

Edge

Set-Cookie:x-ms-cpim-sso:mytenant.onmicrosoft.com_0 = XXX; domain = auth.mywebsite.com;路径= /; SameSite = None;安全; HttpOnly

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

解决方法

Chrome中的SameSite Cookie可能是问题,导致他的Cookie无法按预期发送。以下是一些可以帮助您的提示:

但是我认为首先您应该使用Fiddler之类的工具来捕获流量并验证Cookie是否确实丢失,从而验证这是否是SameSite问题。请在Fiddler中比较不同的浏览器,看看是否存在差异。

请尝试使用隐身模式登录,以免浏览器中没有Cookie。然后,您应该会看到身份提供商和应用程序都设置了Cookie。

在Fiddler中,您可以在“过滤器”选项卡下启用图片中的第一项,以标记设置cookie的响应,从而更容易检测何时设置cookie。 enter image description here