You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[=[WRP]=] scripts to call {{CredentialsContainer/create()|navigator.credentials.create()}} to request the creation of a new
1736
-
[=public key credential source=], [=bound credential|bound=] to an [=authenticator=]. This
1737
-
{{CredentialsContainer/create()|navigator.credentials.create()}} operation can be aborted by leveraging the {{AbortController}};
1738
+
[=public key credential source=], [=bound credential|bound=] to an [=authenticator=].
1739
+
1740
+
By setting <code>|options|.{{CredentialCreationOptions/mediation}}</code> to {{CredentialMediationRequirement/conditional}},
1741
+
[=[RPS]=] can indicate that they would like to register a credential without prominent modal UI if user has already consented to create a credential. The [=[RP]=] SHOULD first check that {{ClientCapability/conditionalCreate}} is present
1742
+
in the result of {{PublicKeyCredential/getClientCapabilities()}} in order to avoid the possibility of causing a user-visible error to be returned if the user agent does
1743
+
not support {{CredentialMediationRequirement/conditional}} [=user mediation=] for {{CredentialsContainer/create()|navigator.credentials.create()}}.
1744
+
The client MUST set BOTH |requireUserPresence| and |requireUserVerification| to |FALSE| when <code>|options|.{{CredentialCreationOptions/mediation}}</code> is set to {{CredentialMediationRequirement/conditional}}
1745
+
unless they may explicitly performed during the ceremony.
1746
+
1747
+
Any {{CredentialsContainer/create()|navigator.credentials.create()}} operation can be aborted by leveraging the {{AbortController}};
1738
1748
see [[dom#abortcontroller-api-integration]] for detailed instructions.
1739
1749
1740
1750
@@ -1773,6 +1783,11 @@ When this method is invoked, the user agent MUST execute the following algorithm
1773
1783
1774
1784
1. If <var ignore>sameOriginWithAncestors</var> is [FALSE]:
1775
1785
1786
+
1. If <code>|options|.{{CredentialCreationOptions/mediation}}</code> is present with the value
1787
+
{{CredentialMediationRequirement/conditional}}:
1788
+
1789
+
1. Throw a "{{NotAllowedError}}" {{DOMException}}
1790
+
1776
1791
1. If the [=relevant global object=], as determined by the calling
1777
1792
{{CredentialsContainer/create()}} implementation, does not have
1778
1793
[=transient activation=]:
@@ -1909,6 +1924,16 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
1909
1924
[=authenticators=] can be <a href="https://en.wikipedia.org/w/index.php?title=Hot_plug">hot-plugged</a> into (e.g., via USB)
1910
1925
or discovered (e.g., via NFC or Bluetooth) by the [=client=] by various mechanisms, or permanently built into the [=client=].
1911
1926
1927
+
1. If <code>|options|.{{CredentialCreationOptions/mediation}}</code> is present with the value
1928
+
{{CredentialMediationRequirement/conditional}}:
1929
+
1930
+
1. If the user agent has not recently mediated an authentication, the origin of said authentication is not |callerOrigin|, or the user
1931
+
does not consent to this type of credential creation, throw a "{{NotAllowedError}}" {{DOMException}}.
1932
+
1933
+
It is up to the user agent to decide when it believes an authentication ceremony has
1934
+
been completed. That authentication ceremony MAY be performed via other means than the
1935
+
[=Web Authentication API=].
1936
+
1912
1937
1. Consider the value of {{PublicKeyCredentialCreationOptions/hints}} and craft the user interface accordingly, as the user-agent sees fit.
1913
1938
1914
1939
1. Start |lifetimeTimer|.
@@ -1997,7 +2022,10 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
1997
2022
<dl class="switch">
1998
2023
1999
2024
: is set to {{UserVerificationRequirement/required}}
2000
-
:: Let |userVerification| be [TRUE].
2025
+
:: 1. If <code>|options|.{{CredentialCreationOptions/mediation}}</code> is set to {{CredentialMediationRequirement/conditional}}
2026
+
and [=user verification=] cannot be collected during the ceremony,
2027
+
throw a {{ConstraintError}} {{DOMException}}.
2028
+
1. Let |userVerification| be [TRUE].
2001
2029
2002
2030
: is set to {{UserVerificationRequirement/preferred}}
2003
2031
:: If the |authenticator|
@@ -2196,7 +2224,7 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
2196
2224
[[#sctn-make-credential-privacy]] for details.
2197
2225
2198
2226
During the above process, the user agent SHOULD show some UI to the user to guide them in the process of selecting and
2199
-
authorizing an authenticator.
2227
+
authorizing an authenticator. When <code>|options|.{{CredentialCreationOptions/mediation}}</code> is set to {{CredentialMediationRequirement/conditional}}, prominent modal UI should <i>not</i> be shown <i>unless</i> credential creation was previously consented to via means determined by the user agent.
2200
2228
</div>
2201
2229
2202
2230
@@ -4616,9 +4644,7 @@ It takes the following input parameters:
4616
4644
: |requireResidentKey|
4617
4645
:: The [=effective resident key requirement for credential creation=], a Boolean value determined by the [=client=].
4618
4646
: |requireUserPresence|
4619
-
:: The constant Boolean value [TRUE].
4620
-
It is included here as a pseudo-parameter to simplify applying this abstract authenticator model to implementations that may
4621
-
wish to make a [=test of user presence=] optional although WebAuthn does not.
4647
+
:: The constant Boolean value [TRUE], or |FALSE| when <code>|options|.{{CredentialCreationOptions/mediation}}</code> is set to {{CredentialMediationRequirement/conditional}} and the user agent previously collected consent from the user.
4622
4648
: |requireUserVerification|
4623
4649
:: The [=effective user verification requirement for credential creation=], a Boolean value determined by the [=client=].
4624
4650
: |credTypesAndPubKeyAlgs|
@@ -5373,7 +5399,7 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
5373
5399
5374
5400
1. Verify that the <code>[=rpIdHash=]</code> in |authData| is the SHA-256 hash of the [=RP ID=] expected by the [=[RP]=].
5375
5401
5376
-
1. Verify that the [=UP=] bit of the <code>[=flags=]</code> in |authData| is set.
5402
+
1. Verify that the [=UP=] bit of the <code>[=flags=]</code> in |authData| is set, unless <code>|options|.{{CredentialCreationOptions/mediation}}</code> is set to {{CredentialMediationRequirement/conditional}}.
5377
5403
5378
5404
1. If the [=[RP]=] requires [=user verification=] for this registration,
5379
5405
verify that the [=authData/flags/UV=] bit of the <code>[=flags=]</code> in |authData| is set.
0 commit comments