V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raw0xff
V2EX  ›  程序员

WebAuthn 如何使多个不同域名的 rp 共用一个 credential?

  •  
  •   raw0xff · 93 天前 · 1025 次点击
    这是一个创建于 93 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想实现用户在( a.com b.com c.com )任意节点注册后,(当此节点失效时)可以在其他节点验证身份。 使用 webauthn 生成凭证 navigator.credentials.create 后同步在多个 rp 上是没问题,问题是浏览器认域名,w3c 规范中 rp.id 只能有一个。 求大佬给点思路?

    15 条回复    2024-08-23 17:46:04 +08:00
    Explr
        1
    Explr  
       93 天前 via Android
    WebAuthn 设计目的之一就是防止相似域名钓鱼,这个应该很难做到吧
    imnpc
        2
    imnpc  
       93 天前
    不支持 必须在绑定的域名下运作
    ghjh
        3
    ghjh  
       93 天前
    不太行吧……
    要不考虑三个网站共用一个登录页面?
    lisxour
        4
    lisxour  
       93 天前
    sso 。。。
    raw0xff
        5
    raw0xff  
    OP
       93 天前
    @Explr
    @imnpc
    gpt 给的方案是加上 DIDs ,实际上就是加把备用钥匙,我认为不安全,相当于把 WebAuthn 原本生物识别安全级别降级了


    @ghjh
    不太行吧,原本目的就是防止单点故障后用户无法登录,这页面故障了全都无法登录。
    zhouhu
        6
    zhouhu  
       93 天前
    绑定到一个根域名
    raw0xff
        7
    raw0xff  
    OP
       93 天前
    @zhouhu 请审题,a.com b.com c.com
    relsoul
        8
    relsoul  
       93 天前
    这个可以归纳为 SSO ,如果软件层面目前解决不了 那就从工程层面去解决。
    raw0xff
        9
    raw0xff  
    OP
       92 天前
    @lisxour
    @relsoul
    请大佬给个思路,如何从工程层面解决?
    relsoul
        10
    relsoul  
       92 天前
    @raw0xff 单点登录,按照目前浏览器的限制 这个问题技术层面是解决不了的,那就搞一个域名专门用来登录。用户登录系统本来就应该保持稳定性。如果要考虑这种分布式验证的话 不如考虑用 2FA ,另一个... webauthn 这玩意挺难用的,在跨设备的时候很蛋疼,比如 web 端注册了后,手机也要登录这个系统的时候 安卓,ios ,pc 同步 key 这步就麻烦得要死。
    skallz
        11
    skallz  
       92 天前
    这个可以通过 websocket 、搭配浏览器指纹+ip 可以做到
    raw0xff
        12
    raw0xff  
    OP
       92 天前
    @skallz 大佬详细讲讲?

    WebAuthn L3 好像支持跨域了
    skallz
        13
    skallz  
       92 天前
    @raw0xff 通过浏览器指纹+ip ,生成唯一设备标识,通过 websocket 让同一个设备下的多个页面共享数据
    raw0xff
        14
    raw0xff  
    OP
       92 天前
    @skallz 大概明白你说的,但是跟我的提问关联在哪里?
    用户在 a.com 通过 webauthn 生成 credential ,a.com 可以将 cred 共享给 b.com c.com ,但浏览器遵循规范不允许 rpid 以外的域访问。
    skallz
        15
    skallz  
       91 天前
    @raw0xff emmm ,没用过 webauthn ,不清楚里面校验的具体规则,如果只是无状态 token 的话,倒是可以在其中一个页面获取到,然后服务推送给同设备下的其他页面。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2803 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 09:32 · PVG 17:32 · LAX 01:32 · JFK 04:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.