是否可以使用 Mozilla Persona 对数据(字符串、令牌、...)进行签名?
我想用 navigator.id.request() 传递一串数据,然后在不受信任的介质上传输断言并在验证时检索数据。
是否可以使用 Mozilla Persona 对数据(字符串、令牌、...)进行签名?
我想用 navigator.id.request() 传递一串数据,然后在不受信任的介质上传输断言并在验证时检索数据。
Persona/BrowserID 不是通用签名方案。为此,您可能想查看JSON Web Signature (JWS),它有多种语言的库支持。
navigator.id.requestAPI不提供将任意数据传递到配置工作流的方法,因此标准 Persona JavaScript 将无法完成此操作。您将不得不使用定制的 JavaScript,它为供应回调提供定制数据而不是公钥对象。
如果您走到这一步,您是否可以让身份提供者签署任意数据将取决于 IdP 软件如何处理公钥参数。例如,Haskellpersona库不透明地处理公钥参数;它将验证任意 JSON“值”(参见源代码)。
另一方面,如果 IdP 软件希望以 JavaScript 中介代码生成的格式解析有效的密钥对象,那么您将无法签署任意数据。
总之:如果您托管自定义 JavaScript 以将任意数据而不是公钥传递给 IdP,并且如果 IdP 的软件将公钥视为不透明值,那么您可以使用 Persona 对任意数据进行签名。