iOS 14 asks for security key instead of touchId/faceId

When i setup navigator.credentials.create() everything works as expected (Safari asks for touch-id) and the credentials are created and saved.

Later when performing the login using navigator.credentials.get() I am not able to force safari to ask for touchId. Instead it only wants a security key.

Code Block js
return {
publicKey: {
challenge:"sampleChallenge",
authenticatorSelection: { authenticatorAttachment: 'platform'},
attestation: 'direct',
timeout: 15000,
allowCredentials:[
{
type:'public-key',
id:"sampleId",
transports:['internal']
}
]
}
}


This is almost the same code as used in the wwdc video, except that I added authenticatorSelection, attestation and timeout.

In credentials.create() I noticed that authenticatorAttachment="platform" is important to force touchId. But in credentials.get() this did not help.

Has anyone already built a full demo that is working for ios?

I wonder also why the code from the "shiny" demo app from the wwdc video is not available for download somewhere!
This would be really helpful for developers!





Answered by Silicium in 629386022
Looks like Apple fixed this with iOS 14 Beta 6!
Same code as above just works now!

On the server side (I am using node.js) now cbor.decodeAllSync returns "apple" as fmt before this was "none"

Code Block Swift
let ctapMakeCredResp = cbor.decodeAllSync(attestationBuffer)[0]
console.log('fmt',ctapMakeCredResp.fmt) // will return "apple", before iOS 14 BETA 6 this was "none"



Are you invoking this from a user activation event such as onclick, or without responding to a user gesture?
Accepted Answer
Looks like Apple fixed this with iOS 14 Beta 6!
Same code as above just works now!

On the server side (I am using node.js) now cbor.decodeAllSync returns "apple" as fmt before this was "none"

Code Block Swift
let ctapMakeCredResp = cbor.decodeAllSync(attestationBuffer)[0]
console.log('fmt',ctapMakeCredResp.fmt) // will return "apple", before iOS 14 BETA 6 this was "none"



iOS 14 asks for security key instead of touchId/faceId
 
 
Q