UNPKG

@nevis-security/nevis-mobile-authentication-sdk-react

Version:

React Native plugin for Nevis Mobile Authentication SDK. Supports only mobile.

385 lines (367 loc) 14.9 kB
"use strict"; /** * Copyright © 2023-2024 Nevis Security AG. All rights reserved. */ /** * The {@link MobileAuthenticationClient} configuration. * * The {@link Configuration} is used to build and initialize the {@link MobileAuthenticationClient}. * * @see {@link MobileAuthenticationClientInitializer.configuration} */ export class Configuration { /** * The default base URL for the HTTP endpoints the SDK must interact with. * * @returns the base URL. */ /** * The registration request URL path used to send the FIDO UAF registration GetUafRequest. * * The registration request URL is the result of combining the `baseUrl` and this path. * * @returns the registration request path. */ /** * The registration response URL path used to send the final FIDO UAF registration response. * * The registration response URL is the result of combining the `baseUrl` and this path. * * @returns registration response path. */ /** * The authentication request URL path used to send the FIDO UAF authentication GetUafRequest. * * The authentication request URL is the result of combining the `baseUrl` and this path. * * @returns the authentication request path. */ /*** * The authentication response URL path used to send the final FIDO UAF authentication response. * * The authentication response URL is the result of combining the `baseUrl` and this path. * * @returns the authentication response path. */ /** * Returns the URL path used to obtain the FIDO UAF deregistration request. * * The deregistration request URL is the result of combining the `baseUrl` and this path. * * @returns the deregistration request path. */ /** * The dispatch target resource URL path. * * The dispatch target resource URL is the result of combining the `baseUrl` and this path. * * @returns the dispatch target resource path. */ /** * The device managing resource URL path. * * The device managing resource URL is the result of combining the `baseUrl` and this path. * * @returns the device managing resource path. */ /** * Time interval for network calls in seconds. Any network request that takes longer than this * value, will result in a timeout. * * @returns the time interval for network requests. */ /** * The user interaction timeout in seconds. This is the maximum time that the SDK will wait to * obtain a result when {@link AccountSelector.selectAccount}, {@link AuthenticatorSelector.selectAuthenticator}, * {@link PinUserVerifier.verifyPin}, {@link PasswordUserVerifier.verifyPassword}, {@link FingerprintUserVerifier.verifyFingerprint}, * or {@link BiometricUserVerifier.verifyBiometric} are invoked (i.e. the maximum time to wait * before any of the methods of the provided consumer in any of those methods is invoked). * * If the timeout occurs, then the operation delegate failure method ({@link Registration.onError}, * {@link OutOfBandRegistration.onError}, {@link Authentication.onError} * or {@link OutOfBandAuthentication.onError}, depending on the operation being executed) will * be invoked. The provided exception will contain an {@link FidoErrorCodeType.UserNotResponsive} * error code. * * @returns the timeout for user interaction. */ /** * The configuration related to application attestation. * * If the backend (nevisFIDO) requires application attestation through its policy, you must provide * this information, so that the mobile SDK can send the required application attestation information. * * This information is not needed if your backend does not require application attestation. */ /** * Returns a new {@link ConfigurationBuilder}. * * @returns a new {@link ConfigurationBuilder}. */ static builder() { return new ConfigurationBuilderImpl(); } /** * Returns a new {@link ConfigurationAuthCloudBuilder}. This is a simpler version of * {@link ConfigurationBuilder} that can only be used when your application interacts with * the Nevis Authentication Cloud. * * If you are fine with the default network parameters of the builder, you just need to provide * the hostname of your application to build a {@link Configuration} object: * * @example * ```ts * const configuration = Configuration.authCloudBuilder() * .hostname(hostname) * .build(); * ``` * * @returns a new {@link ConfigurationAuthCloudBuilder}. */ static authCloudBuilder() { return new ConfigurationAuthCloudBuilderImpl(Configuration.builder()); } /** * Returns a new {@link ConfigurationAdmin4PatternBuilder}. This is a simpler version of * {@link ConfigurationBuilder} that can only be used when your application interacts with * the Nevis Identity Suite configured with default Nevis Admin 4 pattern. * * If you are fine with the default network parameters of the builder, you just need to provide * the hostname of your application to build a {@link Configuration} object: * * @example * ```ts * const configuration = Configuration.admin4PatternBuilder() * .hostname(hostname) * .build(); * ``` * * @returns a new {@link ConfigurationAdmin4PatternBuilder}. */ static admin4PatternBuilder() { return new ConfigurationAdmin4PatternBuilderImpl(Configuration.builder()); } } export const AuthCloudConstants = { RegistrationRequestPath: '/uaf/1.1/request/registration/', RegistrationResponsePath: '/uaf/1.1/registration/', AuthenticationRequestPath: '/uaf/1.1/request/authentication/', AuthenticationResponsePath: '/uaf/1.1/authentication/', DeregistrationRequestPath: '/uaf/1.1/request/deregistration/', DispatchTargetResourcePath: '/token/dispatch/targets/', DeviceResourcePath: '/devices/' }; export const Admin4PatternConstants = { RegistrationRequestPath: `/nevisfido${AuthCloudConstants.RegistrationRequestPath}`, RegistrationResponsePath: `/nevisfido${AuthCloudConstants.RegistrationResponsePath}`, AuthenticationRequestPath: '/auth/fidouaf', AuthenticationResponsePath: '/auth/fidouaf/authenticationresponse/', DeregistrationRequestPath: `/nevisfido${AuthCloudConstants.DeregistrationRequestPath}`, DispatchTargetResourcePath: `/nevisfido${AuthCloudConstants.DispatchTargetResourcePath}`, DeviceResourcePath: `/nevisfido${AuthCloudConstants.DeviceResourcePath}` }; export const ConfigurationConstants = { NetworkTimeoutInSeconds: 60, UserInteractionTimeoutInSeconds: 240 }; class ConfigurationImpl extends Configuration { constructor(baseUrl, registrationRequestPath, registrationResponsePath, authenticationRequestPath, authenticationResponsePath, deregistrationRequestPath, dispatchTargetResourcePath, deviceResourcePath, networkTimeoutInSeconds, userInteractionTimeoutInSeconds, appAttestation) { super(); this.baseUrl = baseUrl; this.registrationRequestPath = registrationRequestPath; this.registrationResponsePath = registrationResponsePath; this.authenticationRequestPath = authenticationRequestPath; this.authenticationResponsePath = authenticationResponsePath; this.deregistrationRequestPath = deregistrationRequestPath; this.dispatchTargetResourcePath = dispatchTargetResourcePath; this.deviceResourcePath = deviceResourcePath; this.networkTimeoutInSeconds = networkTimeoutInSeconds; this.userInteractionTimeoutInSeconds = userInteractionTimeoutInSeconds; this.appAttestation = appAttestation; } getBaseUrl() { return this.baseUrl; } getRegistrationRequestPath() { return this.registrationRequestPath; } getRegistrationResponsePath() { return this.registrationResponsePath; } getAuthenticationRequestPath() { return this.authenticationRequestPath; } getAuthenticationResponsePath() { return this.authenticationResponsePath; } getDeregistrationRequestPath() { return this.deregistrationRequestPath; } getDispatchTargetResourcePath() { return this.dispatchTargetResourcePath; } getDeviceResourcePath() { return this.deviceResourcePath; } getNetworkTimeoutInSeconds() { return this.networkTimeoutInSeconds; } getUserInteractionTimeoutInSeconds() { return this.userInteractionTimeoutInSeconds; } getAppAttestation() { return this.appAttestation; } } /** * A builder for {@link Configuration}. * * For the default values please see the {@link https://docs.nevis.net/mobilesdk/guide/configuration#authentication-cloud-backend | native} * API references. */ export class ConfigurationBuilder {} class ConfigurationBuilderImpl extends ConfigurationBuilder { constructor() { super(); this._registrationRequestPath = AuthCloudConstants.RegistrationRequestPath; this._registrationResponsePath = AuthCloudConstants.RegistrationResponsePath; this._authenticationRequestPath = AuthCloudConstants.AuthenticationRequestPath; this._authenticationResponsePath = AuthCloudConstants.AuthenticationResponsePath; this._deregistrationRequestPath = AuthCloudConstants.DeregistrationRequestPath; this._dispatchTargetResourcePath = AuthCloudConstants.DispatchTargetResourcePath; this._deviceResourcePath = AuthCloudConstants.DeviceResourcePath; this._networkTimeoutInSeconds = ConfigurationConstants.NetworkTimeoutInSeconds; this._userInteractionTimeoutInSeconds = ConfigurationConstants.UserInteractionTimeoutInSeconds; } baseUrl(baseUrl) { this._baseUrl = baseUrl; return this; } registrationRequestPath(registrationRequestPath) { this._registrationRequestPath = registrationRequestPath; return this; } registrationResponsePath(registrationResponsePath) { this._registrationResponsePath = registrationResponsePath; return this; } authenticationRequestPath(authenticationRequestPath) { this._authenticationRequestPath = authenticationRequestPath; return this; } authenticationResponsePath(authenticationResponsePath) { this._authenticationResponsePath = authenticationResponsePath; return this; } deregistrationRequestPath(deregistrationRequestPath) { this._deregistrationRequestPath = deregistrationRequestPath; return this; } dispatchTargetResourcePath(dispatchTargetResourcePath) { this._dispatchTargetResourcePath = dispatchTargetResourcePath; return this; } deviceResourcePath(deviceResourcePath) { this._deviceResourcePath = deviceResourcePath; return this; } networkTimeoutInSeconds(networkTimeoutInSeconds) { this._networkTimeoutInSeconds = networkTimeoutInSeconds; return this; } userInteractionTimeoutInSeconds(userInteractionTimeoutInSeconds) { this._userInteractionTimeoutInSeconds = userInteractionTimeoutInSeconds; return this; } appAttestation(appAttestation) { this._appAttestation = appAttestation; return this; } build() { if (this._baseUrl === undefined) { throw new Error(`Providing the base URL is required!`); } return new ConfigurationImpl(this._baseUrl, this._registrationRequestPath, this._registrationResponsePath, this._authenticationRequestPath, this._authenticationResponsePath, this._deregistrationRequestPath, this._dispatchTargetResourcePath, this._deviceResourcePath, this._networkTimeoutInSeconds, this._userInteractionTimeoutInSeconds, this._appAttestation); } } /** * A simplified builder that can be used to configure an SDK when your application works with the * Nevis Authentication Cloud. * * With this builder, you do not need to provide the relative paths of the endpoints for each operation. * * For the default values please see the {@link https://docs.nevis.net/mobilesdk/guide/configuration#authentication-cloud-backend | native} * API references. */ export class ConfigurationAuthCloudBuilder {} class ConfigurationAuthCloudBuilderImpl { constructor(builder) { this._builder = builder; } hostname(hostname) { this._hostname = hostname; return this; } networkTimeoutInSeconds(networkTimeoutInSeconds) { this._builder.networkTimeoutInSeconds(networkTimeoutInSeconds); return this; } userInteractionTimeoutInSeconds(userInteractionTimeoutInSeconds) { this._builder.userInteractionTimeoutInSeconds(userInteractionTimeoutInSeconds); return this; } appAttestation(appAttestation) { this._builder.appAttestation(appAttestation); return this; } build() { if (this._hostname === undefined) { throw new Error(`Providing the hostname is required!`); } const baseUrl = `https://${this._hostname}/_app`; return this._builder.baseUrl(baseUrl).build(); } } /** * A simplified builder that can be used to configure an SDK when your application works with the * Nevis Identity Suite configured with default Nevis Admin 4 pattern. * * The builder works with the following relative endpoint paths: * - Registration request: `/nevisfido/uaf/1.1/request/registration/` * - Registration response: `/nevisfido/uaf/1.1/registration/` * - Authentication request: `/auth/fidouaf` * - Authentication response: `/auth/fidouaf/authenticationresponse/` * - Deregistration request: `/uaf/1.1/request/deregistration/` * - Dispatch target resource: `/nevisfido/token/dispatch/targets/` * - Device resource: `/nevisfido/devices/` */ export class ConfigurationAdmin4PatternBuilder {} class ConfigurationAdmin4PatternBuilderImpl { constructor(builder) { this._builder = builder; } hostname(hostname) { this._hostname = hostname; return this; } networkTimeoutInSeconds(networkTimeoutInSeconds) { this._builder.networkTimeoutInSeconds(networkTimeoutInSeconds); return this; } userInteractionTimeoutInSeconds(userInteractionTimeoutInSeconds) { this._builder.userInteractionTimeoutInSeconds(userInteractionTimeoutInSeconds); return this; } appAttestation(appAttestation) { this._builder.appAttestation(appAttestation); return this; } build() { if (this._hostname === undefined) { throw new Error(`Providing the hostname is required!`); } const baseUrl = `https://${this._hostname}`; return this._builder.baseUrl(baseUrl).registrationRequestPath(Admin4PatternConstants.RegistrationRequestPath).registrationResponsePath(Admin4PatternConstants.RegistrationResponsePath).authenticationRequestPath(Admin4PatternConstants.AuthenticationRequestPath).authenticationResponsePath(Admin4PatternConstants.AuthenticationResponsePath).deregistrationRequestPath(Admin4PatternConstants.DeregistrationRequestPath).dispatchTargetResourcePath(Admin4PatternConstants.DispatchTargetResourcePath).deviceResourcePath(Admin4PatternConstants.DeviceResourcePath).build(); } } //# sourceMappingURL=Configuration.js.map