Chrome 计划在 2020 年 2 月使用 Chrome 80 为 cookie 实施新的默认安全模型。现在我正在测试我们所有可能受到影响的应用程序。
对于身份验证/授权,我们在后端使用 oidc-client(在 UI 上)和 IndentityServer。
工作流程如下:
要求:
POST http://my_identity_server/api/authenticate {用户名,密码}
回应:
设置 Cookie:idsrv=abc
{"redirectUrl":" http://my_identity_server/connect/authorize/callback?client_id=MyApplication&response_type=id_token token&scope=openid"}
要求
http://my_identity_server/connect/authorize/callback?client_id=MyApplication&response_type=id_token token&scope=openid" Cookie:idsrv=abc
回应:
302 位置:http://myApplication/#id_token=123&access_token=456&token_type=Bearer
要求
http://myApplication/#id_token=123&access_token=456&token_type=Bearer
当应用程序加载时,Oidc-client 添加 IFrame 来做静默更新,实际上发送额外的请求
GET http://my_identity_server/connect/authorize?client_id=MyApplication&response_type=id_token token&prompt=none Cookie:idsrv=abc
我不明白为什么最后一个请求在 IFrame 中包含 idsrv cookie?请求是在 IFrame 内完成的,它绝对是第三方 cookie。如果我将 SameSite 设置切换为“严格”,一切都按预期工作,则不会发送 cookie。
如果有人可以向我解释这个案例或提出一些想法来检查,那就太好了!谢谢你!