Configuration
Using the Configuration java, swift, objc, flutter, react native interface, you define the server and endpoints the SDK has to use to do authentication. You can also specify network timeouts.
Authentication Cloud backend
If your application is using the Nevis Authentication Cloud as backend, the SDK offers a convenience interface for each platform:
Configuration.AuthCloudBuilderfor javaConfiguration(authCloudHostname:::)for swift-[NMAConfiguration initWithAuthCloudHostname:]for objcConfiguration.authCloudBuilderfor flutterConfiguration.authCloudBuilderfor react native
With these interfaces, you only need to provide the hostname of your cloud environment ($instance.mauth.nevis.cloud).
- Android/Kotlin
- Android/Java
- iOS/Swift
- iOS/Objective-C
- Flutter/Dart
- React Native/TypeScript
loading...
loading...
loading...
loading...
loading...
loading...
Identity Suite backend
For those cases where your application interacts with an Identity Suite deployment configured with default Admin 4 pattern, the SDK offers a convenience interface for each platform:
Configuration.Admin4PatternBuilderfor javaConfiguration(idSuiteHostname:::)for swift-[NMAConfiguration initWithIdSuiteHostname:]for objcConfiguration.admin4PatternBuilderfor flutterConfiguration.admin4PatternBuilderfor react native
These initializers allow you to specify the relative paths for each of the endpoints required by the SDK.
- Android/Kotlin
- Android/Java
- iOS/Swift
- iOS/Objective-C
- Flutter/Dart
- React Native/TypeScript
loading...
loading...
loading...
loading...
loading...
loading...
Custom backend
For those cases where custom endpoint paths are needed, use the generic initializers to obtain a Configuration object:
Configuration.Builderfor javaConfiguration(baseUrl:)for swift-[NMAConfiguration initWithBaseUrl:]for objcConfiguration.builderfor flutterConfiguration.builderfor react native
App extension configuration
This is iOS only and applies when the SDK runs inside an app extension, reading the data of its containing application.
Configuration.AppExtension(keychainAccessGroup:applicationIdentifier:)swift, objc is supplied as theappExtension:parameter of theConfigurationinitializers.NMAAppExtensionobjc is supplied via theNMAConfigurationconvenience initializers.
The keychainAccessGroup is the containing application's default keychain access group, and the applicationIdentifier is the containing application's bundle identifier.
- iOS/Swift
- iOS/Objective-C
loading...
loading...
See iOS App Extensions for prerequisites, entitlements and troubleshooting. This API is experimental and requires iOS SDK 4.6.0 or later.
Facet ID
The facet ID of your application has to match the list of allowed facets stored provided by the facet service of the backend.
The most common developer issue when integrating and testing the SDK is a mismatch between the client and backend facet IDs, specifically for applications running on the Android platform.
Always ensure that your backend facet ID configuration matches the client one.
The backend HTTP API serving the facets must be unprotected according to the UAF 1.1 specification. If you know the correct URL, you will be able to quickly verify the backends facets configuration.
- Nevis Authentication Cloud:
https://<your-cloud-instance>.mauth.nevis.cloud/_app/uaf/1.1/facets - On-Premise:
https://<your-domain>/nevisfido/uaf/1.1/facets(This can differ according to configuration)
For backend configuration instructions, see one of the following documents:
- The pattern help for on-premise backends configured using nevisAdmin4.
- The nevisFIDO reference guide for on premise backends configured manually.
- The Authentication Cloud documentation if you are using the Nevis Customer Authentication Cloud.
The format of the facet ID differs between platforms:
Android facet ID
According to the FIDO UAF 1.1 Specifications, the facet ID on Android should follow the android:apk-key-hash:HASH_VALUE format where the HASH_VALUE is Base64 encoded SHA-256 hash of the APK signing certificate.
For example android:apk-key-hash:z7Xkw62dAn/Bue3mKpYrOZ9zSPC7b4mbgzJmdZEDO5w.
If you modify the certificate used to sign your application, the value of the facet ID changes. So, a change of the certificate implies the need to recalculate the facet ID again, and reconfiguring the server with the new facet ID.