Skip to content

Commit

Permalink
Improve UV guidance using new Credential Record concept
Browse files Browse the repository at this point in the history
  • Loading branch information
emlun committed Jul 11, 2022
1 parent 002bb48 commit 3daf3be
Showing 1 changed file with 26 additions and 3 deletions.
29 changes: 26 additions & 3 deletions index.bs
Expand Up @@ -1149,6 +1149,9 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "S
Note: Modifying or removing [=list/items=] from the value returned from {{AuthenticatorAttestationResponse/getTransports()}}
could negatively impact user experience, or even prevent use of the corresponding credential.

: <dfn>UV</dfn>
:: A Boolean value indicating whether this [=credential=] has reported any successful [=user verification=].

: <dfn>BE</dfn>
:: The value of the [=authData/flags/BE=] [=flag=] when the [=public key credential source=] was created.

Expand Down Expand Up @@ -5151,6 +5154,9 @@ In order to perform a [=registration ceremony=], the [=[RP]=] MUST proceed as fo
: [=credential record/transports=]
:: The value returned from <code>|response|.{{AuthenticatorAttestationResponse/getTransports()}}</code>.

: [=credential record/UV=]
:: The value of the [=authData/flags/UV=] [=flag=] in |authData|.

: [=credential record/BE=]
:: The value of the [=authData/flags/BE=] [=flag=] in |authData|.

Expand Down Expand Up @@ -5245,16 +5251,26 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o

1. Verify that the [=UP=] bit of the <code>[=flags=]</code> in |authData| is set.

1. If the [=[RP]=] requires [=user verification=] for this assertion,
1. Determine whether [=user verification=] is required for this assertion.
[=User verification=] SHOULD be required if any of the following is true:

- <code>|options|.{{PublicKeyCredentialRequestOptions/userVerification}}</code> is set to {{UserVerificationRequirement/required}}.
- <code>|options|.{{PublicKeyCredentialRequestOptions/userVerification}}</code> is set to {{UserVerificationRequirement/preferred}}
and <code>|credentialRecord|.[=credential record/UV=]</code> is [TRUE].
- The [=[RP]=] has any other reason to require [=user verification=].

[=User verification=] SHOULD NOT be required
if <code>|options|.{{PublicKeyCredentialRequestOptions/userVerification}}</code> is set to {{UserVerificationRequirement/discouraged}}.

If [=user verification=] was determined to be required,
verify that the [=authData/flags/UV=] bit of the <code>[=flags=]</code> in |authData| is set.

1. If the credential [=backup state=] is used as part of [=[RP]=] business logic or policy,
let |currentBe| and |currentBs| be the values of the [=authData/flags/BE=] and [=authData/flags/BS=] bits, respectively,
of the <code>[=flags=]</code> in |authData|.
Compare |currentBe| and |currentBs| with
<code>|credentialRecord|.[=credential record/BE=]</code> and <code>|credentialRecord|.[=credential record/BS=]</code>
and apply [=[RP]=] policy, if any,
and then update <code>|credentialRecord|.[=credential record/BS=]</code> to the value of |currentBs|.
and apply [=[RP]=] policy, if any.

Note: See [[#sctn-credential-backup]] for examples of how a [=[RP]=] might process the [=authData/flags/BS=] [=flag=] values.

Expand Down Expand Up @@ -5303,6 +5319,13 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
[=[RP]=]-specific. </dd>
</dl>

1. Update the remaining stateful [=struct/items=] of |credentialRecord|:

- If the [=authData/flags/UV=] bit in the [=flags=] in |authData| is set,
update <code>|credentialRecord|.[=credential record/UV=]</code> to [TRUE].
- Update <code>|credentialRecord|.[=credential record/BS=]</code> to the value of
the [=authData/flags/BS=] bit in the [=flags=] in |authData|.

1. If all the above steps are successful, continue with the [=authentication ceremony=] as appropriate. Otherwise, fail the
[=authentication ceremony=].

Expand Down

0 comments on commit 3daf3be

Please sign in to comment.