我目前正在使用以下文档为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身份服务器。
- 我没有设置数字资产链接,因为我使用单独的身份服务器进行身份验证。
谁能帮我调试一下,我在这里做错了什么?
2条答案
按热度按时间lmyy7pcs1#
注意:JSON中的键和值是区分大小写的,所以
Timeout
和Required
都是不正确的。如果你还没有设置数字资产链接,事情就不会工作,所以先尝试一下。(即,你的应用程序将需要许可使用来自abc.com的凭据,然后才能工作。)
a7qyws3x2#
它看起来像使用仍然没有注册任何密钥.请注意,
GetCredentialRequest
有一个参数setPreferImmediatelyAvailableCredentials
设置此行为,由谷歌:如果将preferImmediatelyCredentials设置为true,并且没有立即可用的凭据,则凭据管理器将不显示任何UI,请求将立即失败,并为get请求返回NoCredentialException,为create请求返回NotCredentialNoticeOptionException