为什么要用 webauthn 代替挑战?

Why replace the challenge by webauthn?

对于服务器生成的和客户端生成的挑战,以下字符串是不同的:

为什么我们需要做替换来解决这个问题?

用于参考的源代码。

看起来像是普通 Base64 编码和 Base64 URL 之间的区别,以及填充与无填充选项(尾随 =s)。后者在 URL 秒内可以安全使用,与前者相反。另见 https://en.wikipedia.org/wiki/Base64#URL_applications

Webauthn 需要 using Base64 URL encoding 而某些函数(例如 javascript 的 atobbtoa)是普通的 Base64 编码方案,因此需要从一个转换给另一个。