Closed Kieun closed 2 years ago
Just promote the user whenever the user has authenticated with the roaming authenticator?
This, within reason, I believe. (Personal opinion.)
Conditional UI support should make using local credentials easy for a user. Even in the case of a traditional assertion UI, sites should expect that platforms will prominently offer local credentials(*). If the user signed in using another authenticator, it's probably because they don't have a local credential.
(*) Not necessarily true yet.
@agl Probably, Conditional UI helps for the user to leverage local credential if exist. But, how can we distinguish that the credential is coming from the platform authenticator or from the roaming authenticator (especially phone as a security key)? For get (assertion) response, I think there is no such information that RP can refer. Which specific information RP should look into?
But, how can we distinguish that the credential is coming from the platform authenticator or from the roaming authenticator
The authenticatorAttachment
value in the resulting object will tell you if the device used to generate the assertion was platform
or cross-platform
.
Note also that authenticatorAttachment
is available in both the create()
and get()
responses.
But, how can we distinguish that the credential is coming from the platform authenticator or from the roaming authenticator
The
authenticatorAttachment
value in the resulting object will tell you if the device used to generate the assertion wasplatform
orcross-platform
.
This value is un-signed and can't be trusted to be valid or correct. Just the same as the resident key status, it can be freely altered by client side tooling and js.
@Kieun As an RP the only thing you can trust is signed, attested properties. To determine the attachment you need to look at the CA used in attestation, and then subsequently the device AAGuid to understand what the attachment was during a ceremony.
@Firstyear Yup. The transport might be the security properties for the certain RPs. But, I'm more concerning about the UX flow. In many situations, the metadata is unavailable. So' I don't want to rely on the meatadata and aaguid to decide the UX flow.
All good, so long as it's just for UX flow, that's fine to use the authenticatorAttachement there.
One thing to note is that the authenticatorAttachment in the create() and get() response is nullable. Sometimes the RP might not get any value from the response. I don't know why.
One thing to note is that the authenticatorAttachment in the create() and get() response is nullable. Sometimes the RP might not get any value from the response. I don't know why.
Older browsers exist that will not provide that value. In those cases you probably don't want to prompt the user.
Older browsers exist that will not provide that value. In those cases you probably don't want to prompt the user.
@agl If it is the case, then the value should not be null in the new version of the spec? For old browser cases, the attribute itself does not exist in the PulbicKeyCredential interface.
@Querulant I don't think I quite understand what you're trying to say, but if you're having trouble with a cryptocurrency wallet or exchange I suggest you turn to the support channel for that wallet or exchange. This repository is for the WebAuthn spec, which is not concerned with cryptocurrencies or blockchains. Either way this seems unrelated to this issue, so I will edit your comment to keep things tidy. If you still believe your questions are related to the WebAuthn spec or FIDO technologies, please turn to the public-webauthn@w3c.org or fido-dev@fidoalliance.org mail list instead.
If it is the case, then the value should not be null in the new version of the spec? For old browser cases, the attribute itself does not exist in the PulbicKeyCredential interface.
Discussed during the meeting of 2022-09-12: this field is nullable because the browser may be new enough to know about the field, but unable to learn this information because the platform is too old to provide it. So we feel that the current, nullable, field is correct.
If the authentication response coming from the external authenticator or phone (with hybrid transport) and the client device supports platform authentication, it is recommended for RPs to provide promotion to that user to register the platform authenticator. The user might have a chance to select their authenticator during authentication process (platform authenticator, security key, hybrid and etc). Even if the credential is generated on the platform authenticator of the user device, the user still can authenticate with other authenticators (such as security key and phone - hybrid). In that case, as a RP, the RP has no way to check whether the credential has been created on the platform authenticator or not.
What's the recommendation in this case? Just promote the user whenever the user has authenticated with the roaming authenticator? Or, leverage cookie to indicate that the platform credential is registered before?