Iframe 此身份验证流安全吗? 目标

Iframe 此身份验证流安全吗? 目标,iframe,keycloak,openid-connect,web-component,Iframe,Keycloak,Openid Connect,Web Component,在第三方网站上嵌入一个表单,该表单可以使用第一方身份验证(OIDC、KeyClope)通过承载令牌向受保护的第一方服务发布。(想象一下类似于评论表单的东西。) 此流不允许刷新oidc承载令牌是可以接受的 担心 防止点击劫持 控制允许使用表单的第三方网站 从第三方网站隔离用户信息和令牌 方法 我目前的理解使我相信这些问题已经得到解决: 为了防止点击劫持(如在iframe embedded auth中),整个登录过程在一个新的弹出窗口中执行(请参见图:打开弹出窗口) 检查window.op

在第三方网站上嵌入一个表单,该表单可以使用第一方身份验证(OIDC、KeyClope)通过承载令牌向受保护的第一方服务发布。(想象一下类似于评论表单的东西。)

此流不允许刷新oidc承载令牌是可以接受的

担心
  • 防止点击劫持

  • 控制允许使用表单的第三方网站

  • 从第三方网站隔离用户信息和令牌

  • 方法

    我目前的理解使我相信这些问题已经得到解决:

  • 为了防止点击劫持(如在iframe embedded auth中),整个登录过程在一个新的弹出窗口中执行(请参见图:打开弹出窗口)

  • 检查window.opener和对照通行证列表检查window.opener(请参见图片:登录登录)应确保登录登录登录未嵌入iframe中,不会直接导航到,并且只能在授权网站的弹出窗口中访问。 检查window.postmessage命令的targetOrigin应确保只有授权网站才能成功使用表单

  • 让web组件(请参见图:第1方web组件)使用srcDoc提供的内部沙盒iframe执行所有用户信息或令牌相关操作,应保护用户信息和令牌不被第三方网站访问。使用内部iframe还应确保使用web组件的第三方网站无法截获postmessage事件

  • 问题
  • 这种方法安全吗

  • 我不知道有没有更标准化的方法来解决这个问题


  • 感谢您的投入好的,你每天都能学到新东西

    我了解到,如问题所示,我所采用的方法并不安全

    • 通过srcdoc填充的iframe显然不算作跨原点帧。嗯,嗯。这意味着对第三方网站没有可行的保护。通过在其上添加一个沙盒属性,这并没有变得更好,因为这是为了在另一个方向上提供保护(保护第三方网站不受iframe内容的影响)

    • 可能的工作方式是使用包含跨原点iframe的web组件。但是,为什么要为嵌入第三方网站而烦恼,包括a)脚本和b)web组件标记呢?我看不出(在我的用例中)仅仅使用跨源iframe有什么真正的好处

    • 另一侧的点击劫持弹出补救措施是必须的


    此问答由“在开发eleborate计划之前首先尝试了解您的工具”委员会赞助。

    一个选项是在后端完成所有操作,而不要直接在浏览器中使用令牌,请参阅和