For authentication scenarios that don't necessitate biometric recognition, you can use PIN as an alternative.
PIN authentication has limited capabilities compared to biometric authentication. PIN supports:
Keyless requires at least one of the following authentication factor to be present for each user:
PIN factor can be any valid String
. Numbers are not enforced but are recommended, given the familiarity of numeric PINs for end users.
Enrollment with PIN
To enroll using the PIN factor create the following configuration:
Android iOS Android 4.6 iOS 4.6 Flutter
Copy val configuration = PinEnrollConfig(pin = "1234")
Keyless.enroll(
configuration = configuration,
onCompletion = { /*TODO: process result*/ }
)
Copy let configuration = PinEnrollConfig(pin: "1234")
Keyless.enroll(
configuration: configuration,
onCompletion: { /*TODO: process result*/ }
)
Copy val configuration = EnrollmentConfiguration.builder
.withPin("1234")
.build()
Keyless.enroll(
configuration = configuration,
onCompletion = { /*TODO: process result*/ }
)
Copy let configuration = Keyless.EnrollmentConfiguration.builder
.withPin("1234")
.build()
Keyless.enroll(
configuration: configuration,
onCompletion: { /*TODO: process result*/ }
)
Copy final configuration = PinEnrollConfig(
pin: "myPin"
);
try {
await Keyless.instance.enroll(configuration);
print("Enrollment successful");
} catch (error) {
print("Enrollment failed: $error");
}
To enroll multiple authentication factors you need call Keyless.enroll
for each factor.
Authentication with PIN
To authenticate using the PIN factor create the following configuration:
Android iOS Android 4.6 iOS 4.6 Flutter
Copy val configuration = PinAuthConfig(pin = "1234")
Keyless.authenticate(
configuration = configuration,
onCompletion = { /*TODO: process result*/ }
)
Copy let configuration = PinAuthConfig(pin: "1234")
Keyless.authenticate(
configuration: configuration,
onCompletion: { /*TODO: process result*/ }
)
Copy val configuration = AuthenticationConfiguration.builder
.withPin("1234")
.build()
Keyless.authenticate(
configuration = configuration,
onCompletion = { /*TODO: process result*/ }
)
Copy let configuration = Keyless.AuthenticationConfiguration.builder
.withPin("1234")
.build()
Keyless.authenticate(
configuration: configuration,
onCompletion: { /*TODO: process result*/ }
)
Copy final configuration = PinAuthConfig(
pin: "1234"
);
try {
final result = await Keyless.instance.authenticate(configuration);
print("Authentication successful");
} catch (error) {
print("Authentication failed: $error");
}
De-enrollment with PIN
To de-enroll using the PIN authentication factor, create the following configuration:
Android iOS Android 4.6 iOS 4.6 Flutter
Copy val configuration = PinDeEnrollConfig(pin = "1234")
Keyless.deEnroll(
configuration = configuration,
onCompletion = { /*TODO: process result*/ }
)
Copy let configuration = PinDeEnrollConfig(pin: "1234")
Keyless.deEnroll(
configuration: configuration,
onCompletion: { /*TODO: process result*/ }
)
Copy val configuration =
DeEnrollmentConfiguration.builder
.withPin("myPin")
.build()
Keyless.deEnroll(
configuration = configuration,
onCompletion = { /*TODO: process result*/ }
)
Copy let configuration =
Keyless.DeEnrollmentConfiguration.builder
.withPin("myPin")
.build()
Keyless.deEnroll(
configuration: configuration,
onCompletion: { /*TODO: process result*/ }
)
Copy final configuration = PinDeEnrollConfig(
pin: "1234"
);
try {
await Keyless.instance.deEnroll(configuration);
print("De-enrollment successful");
} catch (error) {
print("De-enrollment failed: $error");
}
Remove PIN (keeping biometric factor)
To remove the PIN factor, while still keeping the biometric factor, perform a biometric authentication using the following configuration:
Android iOS Android 4.6 iOS 4.6 Flutter
Copy val configuration = BiomAuthConfig(shouldRemovePin = true)
Keyless.authenticate(
configuration = configuration,
onCompletion = { /*TODO: process result*/ }
)
Copy let configuration = BiomAuthConfig(shouldRemovePin: true)
Keyless.authenticate(
configuration: configuration,
onCompletion: { /*TODO: process result*/ }
)
Copy val configuration =
AuthenticationConfiguration.builder
.removingPin()
.build()
Keyless.authenticate(
configuration = configuration,
onCompletion = { /*TODO: process result*/ }
)
Copy let configuration =
Keyless.AuthenticationConfiguration.builder
.removingPin()
.build()
Keyless.authenticate(
configuration: configuration,
onCompletion: { /*TODO: process result*/ }
)
Copy final configuration = BiomAuthConfig(
shouldRemovePin: true
);
try {
await Keyless.instance.authenticate(configuration);
print("Pin remove successful");
} catch (error) {
print("Pin remove failed: $error");
}
PIN utilities
To change the PIN use the newPin
parameter in the PinAuthConfig
:
Android iOS Flutter
Copy val configuration = PinAuthConfig(pin = "1234", newPin = "5678")
Keyless.authenticate(
configuration = configuration,
onCompletion = { /*TODO: process result*/ }
)
Copy let configuration = PinAuthConfig(pin: "1234", newPin: "5678")
Keyless.authenticate(
configuration: configuration,
onCompletion: { /*TODO: process result*/ }
)
Copy Future<void> changePin({
required String oldPin,
required String newPin
}) async
To remove the PIN factor and keep the user enrolled with the biometric factor use the shouldRemovePin
parameter in PinAuthConfig
:
Android iOS Flutter
Copy val configuration = PinAuthConfig(pin = "1234", shouldRemovePin = true)
Keyless.authenticate(
configuration = configuration,
onCompletion = { /*TODO: process result*/ }
)
Copy let configuration = PinAuthConfig(pin: "1234", shouldRemovePin: true)
Keyless.authenticate(
configuration: configuration,
onCompletion: { /*TODO: process result*/ }
)
Copy Future<void> removePin({
required String pin
}) async