Interface DeviceInformation
The object containing information of the device where the SDK is running.
For nevisFIDO to be able to generate encrypted out-of-band payloads that can only be
decrypted by your application, a DeviceInformation
must be provided during
registration. During registration you must provide the name()
and optionally
the fcmRegistrationToken()
in the DeviceInformation
created using
a DeviceInformation.Builder
. The other information exposed by the DeviceInformation
(deviceId()
and idUsernamePairs()
) are generated by the SDK and are
not required during registration.
For nevisFIDO to be able to dispatch tokens using the Firebase Cloud Messaging
infrastructure, the device information fcmRegistrationToken()
must return a
registration token (as defined by Firebase).
This registration token is associated with the mobile device receiving the push notifications.
There is a single DeviceInformation
for all accounts. It is created when the first
successful registration is completed, and it is deleted when the last authenticator (and thus the
last account) is removed (using the Deregistration
or LocalData.deleteAuthenticator(String)
.
When a DeviceInformation
is provided in a registration operation, and a DeviceInformation
is already defined (that is, there is already a registered authenticator), the provided
DeviceInformation
will be ignored. The device information contents (name and FCM registration
token) can be changed using a DeviceInformationChange
.
The DeviceInformation
data is stored in nevisIDM as generic credentials. For each account
registered, a generic credential will be created in nevisIDM containing the device information. These
generic credentials are named dispatch targets in the nevisFIDO terminology.
The following example creates a DeviceInformation
using
a phone description (that can be provided by the end user, since this is used for the end user
to identify the mobile device) and a Firebase registration token:
private static DeviceInformation createDeviceInformation(String phoneDescription, String firebaseRegistrationToken) { return DeviceInformation.builder() .name(phoneDescription) .fcmRegistrationToken(firebaseRegistrationToken) .build(); }
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic interface
A builder forDeviceInformation
.static interface
TheDeviceInformation
is stored a set of generic credentials representing dispatch targets in nevisIDM. -
Method Summary
Modifier and TypeMethodDescriptionstatic DeviceInformation.Builder
builder()
Returns a newDeviceInformation.Builder
.default String
deviceId()
The identifier that is generated for the device during registration.The Firebase Cloud Messaging registration token.Returns the identifiers of the generic credentials containing the dispatch target information in nevisIDM and the associated username.name()
A user-friendly name to identify this device, for instanceMy Private Android Phone
.
-
Method Details
-
name
String name()A user-friendly name to identify this device, for instanceMy Private Android Phone
. The name can be modified usingDeviceInformationChange
.Note that the name of the
DeviceInformation
must be unique for a given user (i.e. a user cannot have twoDeviceInformation
s with the same name in the server). Trying to use an existing name for aDeviceInformation
during registration results in anOperationError
error. If an existing name is provided when invokingOperation.execute()
, then aDeviceInformationChangeError
with aDeviceInformationChangeError.NameAlreadyExists
is returned.The name is required and cannot be empty.
The name is stored in nevisIDM in the
fidouaf_name
attribute of the generic credentials containing the dispatch target information.- Returns:
- the user-friendly name describing the device
-
deviceId
The identifier that is generated for the device during registration. It is a String that is used in the backend to associate FIDO UAF credentials with a device.This method gives back an empty
String
by default, because its value is not required when aDeviceInformation
is provided during registration. TheDeviceInformation
returned byLocalData.deviceInformation()
contains a valid device identifier.The device ID is stored in nevisIDM in the
fidouaf_device_id
attribute of the generic credentials containing the dispatch target information.- Returns:
- the device identifier or an empty
String
.
-
fcmRegistrationToken
The Firebase Cloud Messaging registration token. Since the Firebase registration token can change, this can be modified usingDeviceInformationChange
.In the case no push notification is required (for instance when all the out-of-band is done using QR codes or deep links) no Firebase Cloud Messaging registration token value is required.
The Firebase Cloud Messaging registration token is stored in nevisIDM in the
fidouaf_target
attribute of the generic credentials containing the dispatch target information. If provided, this value cannot be empty.- Returns:
- the Firebase Cloud Messaging registration token (if any required).
-
idUsernamePairs
Set<DeviceInformation.IdUsernamePair> idUsernamePairs()Returns the identifiers of the generic credentials containing the dispatch target information in nevisIDM and the associated username.- Returns:
- the identifiers of the generic credentials containing the dispatch target information in nevisIDM and the associated username
-
builder
Returns a newDeviceInformation.Builder
.- Returns:
- a new
DeviceInformation.Builder
-