WebAuthn条件UI未显示在Chrome上

wxclj1h5  于 2023-10-14  发布在  Go
关注(0)|答案(1)|浏览(112)

这是我在StackOverflow上的第一篇文章,所以如果我不能说得很清楚,或者我的文章缺少一些信息,我提前道歉。
我试图实现一个完整的密码登录体验与WebAuthn。它目前在Safari上工作,但当我尝试在Chrome上测试时,只有注册过程起作用。所以我可以创建一个密钥,但是当我尝试登录时,条件UI不会显示在Chrome上,尽管它在Safari上没有任何问题。
下面是应该触发条件UI的js代码:

if (window.PublicKeyCredential && PublicKeyCredential.isConditionalMediationAvailable) {
                try {
                    // Is a conditional UI available in this browser?
                    const cma = await PublicKeyCredential.isConditionalMediationAvailable();
                    if (cma) {
                        const user = await authenticate();
                        if (user) {
                            loading.start();  
                            location.href = '/home';
                        } else {
                            throw new Error('User not found.');
                        }
                    }
                } catch (e) {
                    loading.stop();
                    if (e.name !== 'NotAllowedError') {
                      console.error(e);
                      alert(e.message);
                    } else {
                        console.log("User cancelled the operation")
                    }
                }
            }

使用以下html(autocomplete属性包含webauthn标签,因为它应该):

<form id="ac-login-form" method="POST" action="/auth/username" class="signin-form center"> 
   <div class="form-group"> 
      <input type="text" id="username" class="form-control" placeholder="Username" 
             aria-labelledby="username-label" name="username" 
             autocomplete="username webauthn" required autofocus/> 
   </div> 
   <div class="form-group"> 
      <input type="submit" class="form-control btn btn-primary submit px-3" value="sign in"/> 
   </div> 
</form>

在彻底查看了我能找到的文档之后,我仍然不知道问题可能来自哪里,因为我没有看到任何缺失的元素,并且相同的代码在safari上运行良好。
如果其他信息可以帮助:我在localhost上运行一个https服务器,后端使用node.js。我不认为问题来自这里,因为,如前所述,这个过程在Safari上运行良好,注册过程也在Chrome上运行。
非常感谢你的帮助。
PS:我正在使用我认为是最新版本的Chrome:版本118.0.5993.70

aiazj4mn

aiazj4mn1#

更新:看起来Chrome中有一个修复,因为它现在可以工作,而无需对代码进行任何更改

相关问题