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
1729
-
[=public key credential source=], [=bound credential|bound=] to an [=authenticator=]. This
1730
-
{{CredentialsContainer/create()|navigator.credentials.create()}} operation can be aborted by leveraging the {{AbortController}};
1729
+
[=public key credential source=], [=bound credential|bound=] to an [=authenticator=].
1730
+
1731
+
By setting <code>|options|.{{CredentialRequestOptions/mediation}}</code> to {{CredentialMediationRequirement/conditional}},
1732
+
[=[RPS]=] can indicate that a prominent modal UI should <i>not</i> be shown <i>unless</i> the user has already consented to create a credential via the [=conditionalCreate|conditionalCreate extension=]). [=[RP]=] script SHOULD first check that [conditionalCreate] is present
1733
+
in {=ClientCapabilities=} in order to avoid the possibility of causing a user-visible error to be returned if the user agent does
1734
+
not support {{CredentialMediationRequirement/conditional}} [=user mediation=] for {{CredentialsContainer/create()|navigator.credentials.create()}}.
1735
+
1736
+
This {{CredentialsContainer/create()|navigator.credentials.create()}} operation can be aborted by leveraging the {{AbortController}};
1731
1737
see [[dom#abortcontroller-api-integration]] for detailed instructions.
1732
1738
1733
1739
@@ -1766,6 +1772,11 @@ When this method is invoked, the user agent MUST execute the following algorithm
1766
1772
1767
1773
1. If <var ignore>sameOriginWithAncestors</var> is [FALSE]:
1768
1774
1775
+
1. If <code>|options|.{{CredentialRequestOptions/mediation}}</code> is present with the value
1776
+
{{CredentialMediationRequirement/conditional}}:
1777
+
1778
+
1. Throw a "{{NotAllowedError}}" {{DOMException}}
1779
+
1769
1780
1. If the [=relevant global object=], as determined by the calling
1770
1781
{{CredentialsContainer/create()}} implementation, does not have
1771
1782
[=transient activation=]:
@@ -1903,6 +1914,13 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
1903
1914
[=authenticators=] can be <a href="https://en.wikipedia.org/w/index.php?title=Hot_plug">hot-plugged</a> into (e.g., via USB)
1904
1915
or discovered (e.g., via NFC or Bluetooth) by the [=client=] by various mechanisms, or permanently built into the [=client=].
1905
1916
1917
+
1. If <code>|options|.{{CredentialRequestOptions/mediation}}</code> is present with the value
1918
+
{{CredentialMediationRequirement/conditional}}:
1919
+
1920
+
1. If |conditionalCreateLifetimeTimer| is expired or |conditionalCreateOrigin| is not |callerOrigin|, throw a "{{NotAllowedError}}" {{DOMException}}.
1921
+
1922
+
1. Set |lifetimeTimer| to a client-specific default.
1923
+
1906
1924
1. Consider the value of {{PublicKeyCredentialCreationOptions/hints}} and craft the user interface accordingly, as the user-agent sees fit.
1907
1925
1908
1926
1. Start |lifetimeTimer|.
@@ -2182,7 +2200,6 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
2182
2200
|authenticator| and [=set/remove=] it from |issuedRequests|.
2183
2201
2184
2202
1. Return |constructCredentialAlg| and terminate this algorithm.
2185
-
2186
2203
</dl>
2187
2204
</li>
2188
2205
@@ -2191,7 +2208,7 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
2191
2208
[[#sctn-make-credential-privacy]] for details.
2192
2209
2193
2210
During the above process, the user agent SHOULD show some UI to the user to guide them in the process of selecting and
2194
-
authorizing an authenticator.
2211
+
authorizing an authenticator. When <code>|options|.{{CredentialRequestOptions/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.
2195
2212
</div>
2196
2213
2197
2214
@@ -4888,7 +4905,6 @@ client ignores any further responses from the authenticator for the canceled ope
4888
4905
This operation is ignored if it is invoked in an [=authenticator session=] which does not have an [=authenticatorMakeCredential=]
4889
4906
or [=authenticatorGetAssertion=] operation currently in progress.
4890
4907
4891
-
4892
4908
### The <dfn>silentCredentialDiscovery</dfn> operation ### {#sctn-op-silent-discovery}
4893
4909
4894
4910
This is an OPTIONAL operation authenticators MAY support to enable {{CredentialMediationRequirement/conditional}}
@@ -6714,6 +6730,52 @@ During a transition from the FIDO U2F JavaScript API, a [=[RP]=] may have a popu
This [=client extension|client=] [=authentication extension=] indicates that the RP would like to create a credential after an authenticaton ceremony is successfully mediated by the user agent.
6736
+
6737
+
6738
+
: Extension identifier
6739
+
:: `conditionalCreate`
6740
+
6741
+
: Operation applicability
6742
+
:: [=authentication extension|Authentication=]
6743
+
6744
+
: Client extension input
6745
+
:: The Boolean value [TRUE] to indicate that this extension is requested by the [=[RP]=].
1. Just after [establishing the RP ID](#GetAssertion-DetermineConditional) perform these steps:
6756
+
6757
+
1. If <code>|options|.{{CredentialRequestOptions/mediation}}</code> is not present or does not have the value
6758
+
{{CredentialMediationRequirement/conditional}}:
6759
+
6760
+
1. Throw a "{{NotAllowedError}}" {{DOMException}}
6761
+
6762
+
1. When [showing conditional assertion form control](GetAssn-ConditionalMediation-Interact-FormControl):
6763
+
6764
+
1. Inform the user that the RP will create a credential if the user agent mediates the authentication ceremony.
6765
+
6766
+
1. Set conditionalCreateLifetimeTimer to a client-specific default.
6767
+
6768
+
1. Set conditionalCreateOrigin to the current origin.
6769
+
6770
+
1. If the user agent mediates the authentication ceremony while the conditional assertion is running:
6771
+
6772
+
1. Start conditionalCreateLifetimeTimer.
6773
+
6774
+
1. Optionally collect an [=authorization gesture=] confirming [=user consent=] to create the credential which may later be used to skip (this step)[#op-makecred-step-user-consent] when processing an associated {{CredentialsContainer/get()|navigator.credentials.get()}} call with <code>|options|.{{CredentialRequestOptions/mediation}}</code> set to {{CredentialMediationRequirement/conditional}}.
0 commit comments