io.vertx.ext.auth.webauthn

## Interface WebAuthn

- All Superinterfaces:
    AuthenticationProvider

      public interface WebAuthn
      extends AuthenticationProvider

  Factory interface for creating WebAuthN based `AuthenticationProvider` instances.
  Author:
    Paulo Lopes

- - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `WebAuthn` | `authenticatorFetcher(java.util.function.Function<Authenticator,Future<List<Authenticator>>> fetcher)` Provide a `Function` that can fetch `Authenticator`s from a backend given the incomplete `Authenticator` argument.
    `WebAuthn` | `authenticatorUpdater(java.util.function.Function<Authenticator,Future<Void>> updater)` Provide a `Function` that can update or insert a `Authenticator`.
    `static WebAuthn` | `create(Vertx vertx)` Create a WebAuthN auth provider
    `static WebAuthn` | `create(Vertx vertx, WebAuthnOptions options)` Create a WebAuthN auth provider
    `default Future<JsonObject>` | `createCredentialsOptions(JsonObject user)` Same as `createCredentialsOptions(JsonObject, Handler)` but returning a Future.
    `WebAuthn` | `createCredentialsOptions(JsonObject user, Handler<AsyncResult<JsonObject>> handler)` Gets a challenge and any other parameters for the `navigator.credentials.create()` call.
    `default Future<JsonObject>` | `getCredentialsOptions(String username)` Same as `getCredentialsOptions(String, Handler)` but returning a Future.
    `WebAuthn` | `getCredentialsOptions(String name, Handler<AsyncResult<JsonObject>> handler)` Creates an assertion challenge and any other parameters for the `navigator.credentials.get()` call.
    `MetaDataService` | `metaDataService()` Getter to the instance FIDO2 Meta Data Service.

    - ### Methods inherited from interface io.vertx.ext.auth.authentication.AuthenticationProvider

      `authenticate, authenticate, authenticate, authenticate`

- - ### Method Detail

    - #### create

          static WebAuthn create(Vertx vertx)

      Create a WebAuthN auth provider
      Parameters:
        `vertx` - the Vertx instance.
      Returns:
        the auth provider.

    - #### create

          static WebAuthn create(Vertx vertx,
                                 WebAuthnOptions options)

      Create a WebAuthN auth provider
      Parameters:
        `vertx` - the Vertx instance.
        `options` - the custom options to the provider.
      Returns:
        the auth provider.

    - #### createCredentialsOptions

          WebAuthn createCredentialsOptions(JsonObject user,
                                            Handler<AsyncResult<JsonObject>> handler)

      Gets a challenge and any other parameters for the `navigator.credentials.create()` call. The object being returned is described here https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptions
      Parameters:
        `user` - - the user object with name and optionally displayName and icon
        `handler` - server encoded make credentials request
      Returns:
        fluent self

    - #### createCredentialsOptions

          default Future<JsonObject> createCredentialsOptions(JsonObject user)

      Same as `createCredentialsOptions(JsonObject, Handler)` but returning a Future.

    - #### getCredentialsOptions

          WebAuthn getCredentialsOptions(String name,
                                         Handler<AsyncResult<JsonObject>> handler)

      Creates an assertion challenge and any other parameters for the `navigator.credentials.get()` call. If the auth provider is configured with `RequireResidentKey` and the username is null then the generated assertion will be a RK assertion (Usernameless). The object being returned is described here https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptions
      Parameters:
        `name` - the unique user identified
        `handler` - server encoded get assertion request
      Returns:
        fluent self.

    - #### getCredentialsOptions

          default Future<JsonObject> getCredentialsOptions(String username)

      Same as `getCredentialsOptions(String, Handler)` but returning a Future.

    - #### authenticatorFetcher

          WebAuthn authenticatorFetcher(java.util.function.Function<Authenticator,Future<List<Authenticator>>> fetcher)

      Provide a `Function` that can fetch `Authenticator`s from a backend given the incomplete `Authenticator` argument. The implementation must consider the following fields exclusively, while performing the lookup:
      - `Authenticator.getUserName()`
      - `Authenticator.getCredID()` ()}
      It may return more than 1 result, for example when a user can be identified using different modalities. To signal that a user is not allowed/present on the system, a failure should be returned, not `null`. The function signature is as follows: `(Authenticator) -> Future<List<Authenticator>>>`
      - `Authenticator` the incomplete authenticator data to lookup.
      - `Future`async result with a list of authenticators.
      Parameters:
        `fetcher` - fetcher function.
      Returns:
        fluent self.

    - #### authenticatorUpdater

          WebAuthn authenticatorUpdater(java.util.function.Function<Authenticator,Future<Void>> updater)

      Provide a `Function` that can update or insert a `Authenticator`. The function should store a given authenticator to a persistence storage. When an authenticator is already present, this method must at least update `Authenticator.getCounter()`, and is not required to perform any other update. For new authenticators, the whole object data must be persisted. The function signature is as follows: `(Authenticator) -> Future<Void>`
      - `Authenticator` the authenticator data to update.
      - `Future`async result of the operation.
      Parameters:
        `updater` - updater function.
      Returns:
        fluent self.

    - #### metaDataService

          MetaDataService metaDataService()

      Getter to the instance FIDO2 Meta Data Service.
      Returns:
        the MDS instance.

Copyright © 2022 Eclipse. All rights reserved.