Device Intelligence and OTL Combined flutter SDK.

A Flutter plugin for Bureau's Device Intelligence and OTL product.
Device Intelligence - It helps you understand your user’s unique hardware with their device data. It efficiently syncs the data in the background and processes them. The processed data can be used to generate a fingerprint id.
OTL - The fundamental idea behind this product also known as silent authentication is to enable a smooth, SMS based One-time Password (OTP) less user journey that can help businesses verify the mobile phone number of their customers and provide a frictionless entry for their customers.

Integration Overview

  • Integrate Android SDK in your application
  • Call the API to query device information

  1. SessionKey and UserID is generated from client backend and sent to the SDK.
  2. Invoke the submit function in SDK to pass the data to Bureau backend.
  3. Upon successful transmission of the parameters, a callback is received in the SDK, based on the callback (Success/Failure) next steps can be taken.
  4. If the callback is successful, Invoke Bureau's backend API /v1/suppliers/device-fingerprint to fetch the results of device and v2/auth/userinfo for OTL.
  5. Use the OTL, fingerprint and risk signals to allow, block or redirect the user to a desired flow.

Usage

Install onetaplogin ^ 1.1.0 as a [dependency in your pubspec.yaml file]

Initialise the SDK

On Production

// Import package
import 'package:onetaplogin/onetaplogin.dart';

// Authenticate : msisdn should be starting with 91
// To use OneTapLogin as a standalone product
var status = await Onetaplogin.authenticate(
          clientID,
          txnID,
          msisdn);
// To use Device Intelligence as a standalone product     
var status = await Onetaplogin.submitDeviceIntelligence(         //Here the status returned is a string and contains the finger print sdk's success or failure message

          clientID,
          sessionId,
          userId);
      
// To use both OneTapLogin and Device Intelligence
var status = await Onetaplogin.authenticateWithDeviceIntelligence(
          clientID,
          txnID,
          msisdn);

On Sandbox

// Import package
import 'package:onetaplogin/onetaplogin.dart';

// Authenticate : msisdn should be starting with 91
// To use OneTapLogin as a standalone product
var status = await Onetaplogin.authenticate(
          clientID,
          txnID,
          msisdn, env : "Sandbox");
// To use Device Intelligence as a standalone product     
var status = await Onetaplogin.submitDeviceIntelligence(                       //Here the status returned is a string and contains the finger print sdk's success or failure message

          clientID,
          sessionId,
          userId, env : "Sandbox");   
      
// To use both OneTapLogin and Device Intelligence
var status = await Onetaplogin.authenticateWithDeviceIntelligence(
          clientID,
          txnID,
          msisdn, env : "Sandbox");

The status object for submitDeviceIntelligence and authenticateWithDeviceIntelligence method would be a Bureau's own custom class that has the following properties.

  1. isSuccess boolean to check the success of deviceintelligence.
  2. errorMessage and errorCode to pinpoint errors in the case isSuccess is false and empty for true cases.
  3. authStatus that returns the authentication status if merchant uses the onetap login feature.

Android Manifest changes

//Add the folowing call if targeting S+ devices
<activity>
android:exported="true"
</activity>
........

<application
    android:usesCleartextTraffic="true"
</application>

or if you are using network config

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="false">PLEASE CONTACT BUREAU TO GET DOMAIN</domain>
    </domain-config>
</network-security-config>

Backend Integration Overview

OTL - https://docs.bureau.id/reference/one-tap-login

Device Intelligence - https://docs.bureau.id/reference/device-intelligence