In Progress
Status Update
Comments
bl...@google.com <bl...@google.com> #2
Automated by Blunderbuss job android-credential-manager-autoassigner for config android_credman_config for component 1301097.
re...@google.com <re...@google.com> #3
The error you posted state "activity is cancelled by the user". This implies the request was cancelled somehow during the request.
Can you grab a bugreport and attach it to this bug?
oy...@gmail.com <oy...@gmail.com> #4
okay,
Registartion
CreatePublicKeyCredentialRequest createCredentialRequest = new CreatePublicKeyCredentialRequest(regJson);
regJson value :
{
"challenge": "<challenge>",
"rp": {
"id": "passkeys-codelab.glitch.me ",
"name": "CredMan App Test"
},
"pubKeyCredParams": [
{
"type": "public-key",
"alg": -7
},
{
"type": "public-key",
"alg": -257
}
],
"authenticatorSelection": {
"authenticatorAttachment": "platform",
"requireResidentKey": false,
"userVerification": "required"
},
"attestation": "direct",
"user": {
"id": "<userId>",
"name": "<userName>",
"displayName": "<userDisplayName>"
}
}
Authentication
GetPublicKeyCredentialOption getPublicKeyCredentialOption = new GetPublicKeyCredentialOption(authJson);
GetCredentialRequest getCredentialRequest = new GetCredentialRequest.Builder()
.addCredentialOption(new GetPasswordOption())
.addCredentialOption(getPublicKeyCredentialOption)
.build();
authJson Value :
{
"challenge": "<challenge>",
"timeout": 30000,
"rpId": "passkeys-codelab.glitch.me ",
"allowCredentials": [
{
"type": "public-key",
"id": "<credentialID>"
}
],
"userVerification": "required",
"extensions": {
}
}
** credentialID -> attestationObject inside credentialID
errorMessage :
During begin sign in, failure response from one tap: 16: Cannot find a matching credential.
errorStack :
[
androidx.credentials.playservices.controllers.CredentialProviderBaseController$Companion.getCredentialExceptionTypeToException$credentials_play_services_auth_release(CredentialProviderBaseController.kt: 110),
androidx.credentials.playservices.controllers.BeginSignIn.CredentialProviderBeginSignInController$resultReceiver$1$onReceiveResult$1.invoke(CredentialProviderBeginSignInController.kt: 93),
androidx.credentials.playservices.controllers.BeginSignIn.CredentialProviderBeginSignInController$resultReceiver$1$onReceiveResult$1.invoke(CredentialProviderBeginSignInController.kt: 93),
androidx.credentials.playservices.controllers.CredentialProviderController.maybeReportErrorFromResultReceiver(CredentialProviderController.kt: 159),
androidx.credentials.playservices.controllers.BeginSignIn.CredentialProviderBeginSignInController.access$maybeReportErrorFromResultReceiver(CredentialProviderBeginSignInController.kt: 55),
androidx.credentials.playservices.controllers.BeginSignIn.CredentialProviderBeginSignInController$resultReceiver$1.onReceiveResult(CredentialProviderBeginSignInController.kt: 91),
android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java: 50),
android.os.Handler.handleCallback(Handler.java: 942),
android.os.Handler.dispatchMessage(Handler.java: 99),
android.os.Looper.loopOnce(Looper.java: 226),
android.os.Looper.loop(Looper.java: 313),
android.app.ActivityThread.main(ActivityThread.java: 8762),
java.lang.reflect.Method.invoke(NativeMethod),
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java: 604),
com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 1067)
]
Registartion
CreatePublicKeyCredentialRequest createCredentialRequest = new CreatePublicKeyCredentialRequest(regJson);
regJson value :
{
"challenge": "<challenge>",
"rp": {
"id": "
"name": "CredMan App Test"
},
"pubKeyCredParams": [
{
"type": "public-key",
"alg": -7
},
{
"type": "public-key",
"alg": -257
}
],
"authenticatorSelection": {
"authenticatorAttachment": "platform",
"requireResidentKey": false,
"userVerification": "required"
},
"attestation": "direct",
"user": {
"id": "<userId>",
"name": "<userName>",
"displayName": "<userDisplayName>"
}
}
Authentication
GetPublicKeyCredentialOption getPublicKeyCredentialOption = new GetPublicKeyCredentialOption(authJson);
GetCredentialRequest getCredentialRequest = new GetCredentialRequest.Builder()
.addCredentialOption(new GetPasswordOption())
.addCredentialOption(getPublicKeyCredentialOption)
.build();
authJson Value :
{
"challenge": "<challenge>",
"timeout": 30000,
"rpId": "
"allowCredentials": [
{
"type": "public-key",
"id": "<credentialID>"
}
],
"userVerification": "required",
"extensions": {
}
}
** credentialID -> attestationObject inside credentialID
errorMessage :
During begin sign in, failure response from one tap: 16: Cannot find a matching credential.
errorStack :
[
androidx.credentials.playservices.controllers.CredentialProviderBaseController$Companion.getCredentialExceptionTypeToException$credentials_play_services_auth_release(CredentialProviderBaseController.kt: 110),
androidx.credentials.playservices.controllers.BeginSignIn.CredentialProviderBeginSignInController$resultReceiver$1$onReceiveResult$1.invoke(CredentialProviderBeginSignInController.kt: 93),
androidx.credentials.playservices.controllers.BeginSignIn.CredentialProviderBeginSignInController$resultReceiver$1$onReceiveResult$1.invoke(CredentialProviderBeginSignInController.kt: 93),
androidx.credentials.playservices.controllers.CredentialProviderController.maybeReportErrorFromResultReceiver(CredentialProviderController.kt: 159),
androidx.credentials.playservices.controllers.BeginSignIn.CredentialProviderBeginSignInController.access$maybeReportErrorFromResultReceiver(CredentialProviderBeginSignInController.kt: 55),
androidx.credentials.playservices.controllers.BeginSignIn.CredentialProviderBeginSignInController$resultReceiver$1.onReceiveResult(CredentialProviderBeginSignInController.kt: 91),
android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java: 50),
android.os.Handler.handleCallback(Handler.java: 942),
android.os.Handler.dispatchMessage(Handler.java: 99),
android.os.Looper.loopOnce(Looper.java: 226),
android.os.Looper.loop(Looper.java: 313),
android.app.ActivityThread.main(ActivityThread.java: 8762),
java.lang.reflect.Method.invoke(NativeMethod),
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java: 604),
com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 1067)
]
re...@google.com <re...@google.com>
oy...@gmail.com <oy...@gmail.com> #5
When will an answer be available?
oy...@gmail.com <oy...@gmail.com> #6
Comment has been deleted.
oy...@gmail.com <oy...@gmail.com> #7
In my opinion, when the require Resident Key value is false, if you register in Credential Manager and authenticate, authentication is done with GoogleOneTab, not Fido2 authentication.
sg...@google.com <sg...@google.com>
lh...@google.com <lh...@google.com> #8
Next step would be to clarity FiDo vs CM use cases and update partner Dev documentation.
Description
Version used: Android Studio Giraffe | 2022.3.1
Devices/Android versions reproduced on: Android13, API 33 Device
If this is a bug in the library, we would appreciate if you could attach:
implementation 'androidx.credentials:credentials-play-services-auth:1.2.0'
implementation 'androidx.credentials:credentials:1.2.0'
If this is a bug in the library, we would appreciate if you could attach:
I would like to implement SDC in Credential Manager. In the case of MDC, it operates as a pass key and generally calls the response value from the authentication device. However, in the case of SDC, the authentication device emits an error value.
I raised this issue before, but there was no proper answer.
For reference, the SDC registration process operates normally, and the authentication device only sends out error values during the authentication process.
Features when registering
requireResidentKey = false
attestation = direct
PublicKeyCredentialRequestOptions RequestJson Value :
The values below are example values.
{
"challenge": "HjBbH__fbLuzy95AGR31yEARA0EMtKlY0NrV5oy3NQw",
"timeout": 1800000,
"userVerification": "preferred",
"rpId": "
"allowCredentials":[
{
"type" : public-key",
"id" : "id"
}
],
}
Error when symptom occurs
During begin sign in, failure response from one tap: 16: Cannot find a matching credential.
please answer about my question.