Chrome计划在2020年2月使用Chrome 80实施cookie的新的默认安全模式。 现在,我正在测试所有可能受到影响的应用程序。
对于身份验证/授权,我们在后台使用oidc-client(在UI上)和IndentityServer。
工作流程如下:
请求:
POST http://my_identity_server/api/authenticate {userName,密码}
响应:
Set-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客户端会添加IFrame进行无声更新,实际上是发送其他请求
获取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。
如果有人可以向我解释此案或提出一些想法进行检查,那就太好了!谢谢!
答案 0 :(得分:0)
OIDC客户端库使用OIDC会话管理来跟踪通过使用OP iframe和客户端(RP)iframe完成的会话。
身份服务器为此目的发出idsrv:session cookie
检查此 https://medium.com/@piraveenaparalogarajah/openid-connect-session-management-dc6a65040cc