关于Android FIDO U2F API中的appID,我有两个问题。
是否可以使用facetID直接标识我的应用,还是需要一个HTTPS URL指向包含有效facetID的JSON?我怀疑可能无法直接将facetID用作appID(尽管官方FIDO规范应允许使用它)。
我的另一个问题是关于facetID识别我的应用程序。 official FIDO specification如下定义Android应用程序的facetID:
在Android [ANDROID]情况下,FacetID必须是从APK签名证书[APK-Signing]的Base64编码SHA-1哈希派生的URI:
android:apk-key-hash:<base64_encoded_sha1_hash-of-apk-signing-cert>
当我查看Google样本中有效的example时,使用的facetID似乎包含其他内容。
有问题的facetID(绝对不是base64):
android:apk-key-hash:bkHnlWEV_jRCPdYGJfwOl7Sn_CLC_2TE3h4TO1_n34I
这是包含有关facetID的JSON。
如果API不希望使用base64编码的哈希,那么它希望使用哪种格式(以及如何生成)?
最佳答案
解:
Google由于某种原因未遵循FIDO U2F规范。计算apk签名证书的SHA-256(不是每个FIDO规范的SHA-1),然后计算base64。然后在末尾删除=字符。