@nevis-security/nevis-mobile-authentication-sdk-react
Version:
React Native plugin for Nevis Mobile Authentication SDK. Supports only mobile.
224 lines • 10.2 kB
TypeScript
/**
* Copyright © 2023-2024 Nevis Security AG. All rights reserved.
*/
import type { AuthorizationProvider } from '../../authorization/AuthorizationProvider';
import { OperationError } from '../../error/operation/OperationError';
import { HttpOperation, HttpOperationImpl } from '../HttpOperation';
import { AccountSelector } from '../selection/AccountSelector';
import { AuthenticatorSelector } from '../selection/AuthenticatorSelector';
import { BiometricUserVerifier } from '../userverification/BiometricUserVerifier';
import { DevicePasscodeUserVerifier } from '../userverification/DevicePasscodeUserVerifier';
import { FingerprintUserVerifier } from '../userverification/FingerprintUserVerifier';
import type { PasswordUserVerifier } from '../userverification/PasswordUserVerifier';
import { PinUserVerifier } from '../userverification/PinUserVerifier';
/**
* The operation handling an out-of-band authentication.
*
* This is the object returned by the SDK, when an {@link OutOfBandPayload} was processed and the
* {@link OutOfBandPayload} corresponds to an authentication operation.
*
* Usage example:
* ```ts
* class AccountSelectorImpl extends AccountSelector {
* async selectAccount(
* context: AccountSelectionContext,
* handler: AccountSelectionHandler
* ): Promise<void> {
* await handler.username(username).catch(console.error);
* }
* }
*
* class AuthenticatorSelectorImpl extends AuthenticatorSelector {
* async selectAuthenticator(
* context: AuthenticatorSelectionContext,
* handler: AuthenticatorSelectionHandler
* ): Promise<void> {
* await handler.aaid(aaid).catch(console.error);
* }
* }
*
* class PinUserVerifierImpl extends PinUserVerifier {
* async verifyPin(
* context: PinVerificationContext,
* handler: PinVerificationHandler
* ): Promise<void> {
* await handler.verifyPin(pin).catch(console.error);
* }
* }
*
* class BiometricUserVerifierImpl extends BiometricUserVerifier {
* async verifyBiometric(
* context: BiometricUserVerificationContext,
* handler: BiometricUserVerificationHandler
* ): Promise<void> {
* await handler
* .listenForOsCredentials(
* BiometricPromptOptions.create(
* 'Biometric authentication required',
* 'Cancel',
* 'Please identify yourself.'
* )
* )
* .catch(console.error);
* }
* }
*
* async authenticateWithOutOfBand(
* client: MobileAuthenticationClient,
* payload: OutOfBandPayload
* ): Promise<void> {
* await client.operations.outOfBandOperation
* .payload(payload)
* .onRegistration((registration) => {
* // handle registration
* })
* .onAuthentication((authentication) => {
* authentication
* .accountSelector(new AccountSelectorImpl())
* .authenticatorSelector(new AuthenticatorSelectorImpl())
* .pinUserVerifier(new PinUserVerifierImpl())
* .biometricUserVerifier(new BiometricUserVerifierImpl())
* .onSuccess((authorizationProvider) => {
* // handle success
* })
* .onError((error) => {
* // handle error
* })
* .execute();
* })
* .onError((_error) => {
* // handle out-of-band error
* })
* .execute();
* }
* ```
*
* @see {@link OutOfBandOperation.onAuthentication}
*/
export declare abstract class OutOfBandAuthentication extends HttpOperation<OutOfBandAuthentication> {
/**
* Specifies the object that will take care of the account selection.
*
* @param accountSelector the {@link AccountSelector}.
* @returns an {@link OutOfBandAuthentication} object.
*/
abstract accountSelector(accountSelector: AccountSelector): OutOfBandAuthentication;
/**
* Specifies the object that will take care of the selection of the authenticator to be used.
*
* **IMPORTANT** \
* Providing the authenticator selector is required.
*
* @param authenticatorSelector the {@link AuthenticatorSelector}.
* @returns an {@link OutOfBandAuthentication} object.
*/
abstract authenticatorSelector(authenticatorSelector: AuthenticatorSelector): OutOfBandAuthentication;
/**
* Specifies the object that will take care of the PIN user verification.
*
* **IMPORTANT** \
*
* Providing at least one of the {@link PinUserVerifier}, {@link PasswordUserVerifier},
* {@link BiometricUserVerifier} or {@link DevicePasscodeUserVerifier} or {@link FingerprintUserVerifier}
* is required.
*
* @param pinUserVerifier the {@link PinUserVerifier}.
* @returns an {@link OutOfBandAuthentication} object.
*/
abstract pinUserVerifier(pinUserVerifier: PinUserVerifier): OutOfBandAuthentication;
/**
* Specifies the object that will take care of the password user verification.
*
* **IMPORTANT** \
* Providing at least one of the {@link PinUserVerifier}, {@link PasswordUserVerifier},
* {@link BiometricUserVerifier} or {@link DevicePasscodeUserVerifier} or {@link FingerprintUserVerifier}
* is required.
*
* @param passwordUserVerifier the {@link PasswordUserVerifier}.
* @returns an {@link OutOfBandAuthentication} object.
*/
abstract passwordUserVerifier(passwordUserVerifier: PasswordUserVerifier): OutOfBandAuthentication;
/**
* Specifies the object that will take care of the biometric user verification.
* It must be provided only if a biometric authenticator must be registered.
*
* **IMPORTANT** \
* Providing at least one of the {@link PinUserVerifier}, {@link PasswordUserVerifier},
* {@link BiometricUserVerifier} or {@link DevicePasscodeUserVerifier} or {@link FingerprintUserVerifier}
* is required.
*
* @param biometricUserVerifier the {@link BiometricUserVerifier}.
* @returns an {@link OutOfBandAuthentication} object.
*/
abstract biometricUserVerifier(biometricUserVerifier: BiometricUserVerifier): OutOfBandAuthentication;
/**
* Specifies the object that will take care of the device passcode user verification.
* It must be provided only if a device passcode authenticator must be registered.
*
* **IMPORTANT** \
* Providing at least one of the {@link PinUserVerifier}, {@link PasswordUserVerifier},
* {@link BiometricUserVerifier} or {@link DevicePasscodeUserVerifier} or {@link FingerprintUserVerifier}
* is required.
*
* @param devicePasscodeUserVerifier the {@link DevicePasscodeUserVerifier}.
* @returns an {@link OutOfBandAuthentication} object.
*/
abstract devicePasscodeUserVerifier(devicePasscodeUserVerifier: DevicePasscodeUserVerifier): OutOfBandAuthentication;
/**
* Specifies the object that will take care of the fingerprint user verification.
* It must be provided only if a fingerprint authenticator must be registered.
*
* **IMPORTANT** \
* Providing at least one of the {@link PinUserVerifier}, {@link PasswordUserVerifier},
* {@link BiometricUserVerifier} or {@link DevicePasscodeUserVerifier} or {@link FingerprintUserVerifier}
* is required.
*
* @param fingerprintUserVerifier the {@link FingerprintUserVerifier}.
* @returns an {@link OutOfBandAuthentication} object.
*/
abstract fingerprintUserVerifier(fingerprintUserVerifier: FingerprintUserVerifier): OutOfBandAuthentication;
/**
* Specifies the object that will be invoked if the authentication was successful.
*
* **IMPORTANT** \
* Providing the {@link onSuccess} is required.
*
* @param onSuccess the callback which receives an optional {@link AuthorizationProvider}.
* @returns an {@link OutOfBandAuthentication} object.
*/
abstract onSuccess(onSuccess: (authorizationProvider?: AuthorizationProvider) => void): OutOfBandAuthentication;
/**
* Specifies the object that will be invoked if the authentication failed.
*
* **IMPORTANT** \
* Providing the {@link onError} is required.
*
* @param onError the callback which receives an {@link OperationError}.
* @returns an {@link OutOfBandAuthentication} object.
*/
abstract onError(onError: (error: OperationError) => void): OutOfBandAuthentication;
}
export declare class OutOfBandAuthenticationImpl extends HttpOperationImpl<OutOfBandAuthentication> implements OutOfBandAuthentication {
operationId: string;
private _accountSelector?;
private _authenticatorSelector?;
private _pinUserVerifier?;
private _passwordUserVerifier?;
private _biometricUserVerifier?;
private _devicePasscodeUserVerifier?;
private _fingerprintUserVerifier?;
private _onSuccess?;
private _onError?;
constructor(operationId: string);
accountSelector(accountSelector: AccountSelector): OutOfBandAuthentication;
authenticatorSelector(authenticatorSelector: AuthenticatorSelector): OutOfBandAuthentication;
pinUserVerifier(pinUserVerifier: PinUserVerifier): OutOfBandAuthentication;
passwordUserVerifier(passwordUserVerifier: PasswordUserVerifier): OutOfBandAuthentication;
biometricUserVerifier(biometricUserVerifier: BiometricUserVerifier): OutOfBandAuthentication;
devicePasscodeUserVerifier(devicePasscodeUserVerifier: DevicePasscodeUserVerifier): OutOfBandAuthentication;
fingerprintUserVerifier(fingerprintUserVerifier: FingerprintUserVerifier): OutOfBandAuthentication;
onSuccess(onSuccess: (authorizationProvider?: AuthorizationProvider) => void): OutOfBandAuthentication;
onError(onError: (error: OperationError) => void): OutOfBandAuthentication;
execute(): Promise<void>;
}
//# sourceMappingURL=OutOfBandAuthentication.d.ts.map