与Android集成密钥时出错

dddzy1tm  于 2024-01-04  发布在  Android
关注(0)|答案(2)|浏览(123)

我目前正在使用以下文档为Android应用程序实现密钥身份验证:https://developer.android.com/training/sign-in/passkeys#kotlin
对于身份验证,我使用WSO 2身份服务器,但这里我做了一些不同的事情。不是应用程序创建密钥,而是WSO 2身份服务器,我将密钥存储在设备上。
这是我遇到的一个奇怪的行为:应用程序没有提示我输入应用程序中注册的密钥。相反,它显示了一个QR码,用于使用存储在其他设备上的密钥登录。之后,我得到了一个GetCredentialCancellationException抛出。

以下是有关该过程的更多细节:

  • 我将requestJson设置为:

{“challenge”:“必填”,“allowCredentials”:[],“权限”:1800000,“userVerification”:“必填”,“rpId”:“abc.com“}

  • 质询和rpId都来自WSO 2身份服务器。
  • 我没有设置数字资产链接,因为我使用单独的身份服务器进行身份验证。

谁能帮我调试一下,我在这里做错了什么?

lmyy7pcs

lmyy7pcs1#

注意:JSON中的键和值是区分大小写的,所以TimeoutRequired都是不正确的。
如果你还没有设置数字资产链接,事情就不会工作,所以先尝试一下。(即,你的应用程序将需要许可使用来自abc.com的凭据,然后才能工作。)

a7qyws3x

a7qyws3x2#

它看起来像使用仍然没有注册任何密钥.请注意,GetCredentialRequest有一个参数setPreferImmediatelyAvailableCredentials设置此行为,由谷歌:
如果将preferImmediatelyCredentials设置为true,并且没有立即可用的凭据,则凭据管理器将不显示任何UI,请求将立即失败,并为get请求返回NoCredentialException,为create请求返回NotCredentialNoticeOptionException

相关问题