在SameSite = Lax

时间:2019-12-23 11:03:43

标签: identityserver4 oidc-client-js samesite

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。

如果有人可以向我解释此案或提出一些想法进行检查,那就太好了!谢谢!

1 个答案:

答案 0 :(得分:0)

OIDC客户端库使用OIDC会话管理来跟踪通过使用OP iframe和客户端(RP)iframe完成的会话。

身份服务器为此目的发出idsrv:session cookie

检查此 https://medium.com/@piraveenaparalogarajah/openid-connect-session-management-dc6a65040cc