Back to Content

PublicKeyCredential: isConditionalMediationAvailable() static method

files/en-us/web/api/publickeycredential/isconditionalmediationavailable_static/index.md

latest1.8 KB
Original Source

{{APIRef("Web Authentication API")}}{{securecontext_header}}

The isConditionalMediationAvailable() static method of the {{domxref("PublicKeyCredential")}} interface returns a {{jsxref("Promise")}} which resolves to true if conditional mediation is available.

Syntax

js-nolint
PublicKeyCredential.isConditionalMediationAvailable()

Parameters

None.

Return value

A {{jsxref("Promise")}} which resolves to a boolean value indicating whether or not conditional mediation is available.

Exceptions

The returned {{jsxref("Promise")}} may be rejected with the following values:

  • SecurityError {{domxref("DOMException")}}
    • : The RP domain is not valid.

Examples

Before invoking a conditional WebAuthn API call, check if:

  • The browser supports the Web Authentication API.
  • The browser supports conditional mediation.
js
// Availability of `window.PublicKeyCredential` means WebAuthn is usable.
if (
  window.PublicKeyCredential &&
  PublicKeyCredential.isConditionalMediationAvailable
) {
  // Check if conditional mediation is available.
  const isCMA = await PublicKeyCredential.isConditionalMediationAvailable();
  if (isCMA) {
    // Call WebAuthn authentication
    const publicKeyCredentialRequestOptions = {
      // Server generated challenge
      challenge: challengeFromServer,
      // The same RP ID as used during registration
      rpId: "example.com",
    };

    const credential = await navigator.credentials.get({
      publicKey: publicKeyCredentialRequestOptions,
      signal: abortController.signal,
      // Specify 'conditional' to activate conditional UI
      mediation: "conditional",
    });
  }
}

Specifications

{{Specifications}}

Browser compatibility

{{Compat}}