Authentiq8 Me Integration Guide

Secure API Access to the Authentiq8 Me Platform

Overview

This document explains how to integrate Authentiq8 Me as an authentication method in your bespoke app/website, you will have complete control and can trigger the Authentiq8 Me API for multiple calls, with defined security for different operations.

Eliminate password-based vulnerabilities and reduce the risk of phishing, credential stuffing, and account takeovers.

Key Benefits

  • No passwords to store or manage
  • Biometric protection via the Authentiq8 Me app
  • Fully customisable and bespoke to your specific needs
  • Future-ready for SSO and MFA integrations

Integration Steps

Introduction

Authentiq8 Me allows secure, passwordless authentication for your users using digital signatures and push notifications. This guide explains how to integrate with the Authentiq8 Me API using RSA key pairs. There are 3 basic steps in order to be able to Authentiq8 Me your users:

Download the Authentiq8 Me App

User should download and register the Authentiq8Me App

Register for a Free Trial

Register your business on the https://authentiq8.me website

Configure

Authentiq8 Me an action (Login / Payment / Password Reset)

1

Key Management

Authentiq8 Me uses RSA digital signatures for security. Security doesn’t come from obscurity, but from cryptographic keys.

Supported key lengths: 2048 - 4096 bits RSA.

subj="/C=GB/ST=London/L=Remote/O=My Organisation/OU=My Unit/CN=My Name/emailAddress=agent@myorg.com"
openssl req -x509 -newkey rsa:4096 -keyout mycert.key -out mycert.pem -nodes -subj "$subj"

Another Option

We can generate an RSA-4096 keypair for you inside the Authentiq8 Me portal, on the API keys page click "Generate Random Key".

2

API Endpoint

All API requests should be sent to the following End Point:

https://api.authentiq8.me/index.php
3

Digital Signature

All requests are signed with your RSA private key. Algorithm: SHA-256. The signature is hex encoded.

<?php

//get private key
$strPrivateKey = file_get_contents("/path-to-key/private-key.key");

//create binary signature
openssl_sign($jsonMessage, $binarySignature, $strPrivateKey, OPENSSL_ALGO_SHA256);

//convert to hex and store the result in $strSignature
$strSignature = bin2hex($binarySignature); 

?>
4

Headers

All API requests require the following headers:

  • Content-Type: application/json
  • ClientId: your client ID from Authentiq8 Me portal
  • TransactionID: unique transaction identifier
  • ClientIP: IP address of the end user
  • DigitalSignature: your hex signature
5

Available APIs

List of all available API calls, select any API and try in our test framework.

txn_type Description
ping Check communications are working
authenticate Send authentication request to customer device
check-user-devices Check for deleted device-id
disconnect-user Disconnect the user from your client. For security and general housekeeping: when you no longer have a connection to a user it's good practice to remove the connection on the user device also.
get-credits Get number of credits on your pre-paid account in order to not run out
get-qr-code Get a QR Code in order to enrole new user for authenticator
get-user-status Poll this API to determine if the QR code has been used. This is an alternative to using the notification/webhook. Do not request more than once per second per user-id.
6

Example Request

Example php integration for ping:

<?php
    //set up the body as an array
    $arrMessage=array();
    $arrMessage['message']='World';
    
    //convert the body array into JSON
    $jsonMessage = json_encode($arrMessage);
    
    //set up the headers
    $arrHeaders = array(
    'Content-Type: application/json',
    'ClientId: 18cfe20b-7fb8-c27d-d1ee-f127c71e11b7',
    'TransactionID: uniqueID1',
    'ClientIP: 127.0.0.1',
    'DigitalSignature: 0f0310baacf122106e3ab0c5b80fc044c19...'
    );
    
    //Now send the message using cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonMessage);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $arrHeaders);
    curl_setopt($ch, CURLOPT_URL, 'https://api.authentiq8.me/index.php');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    
    //the response JSON plus all the response headers are now in the string $jsonResponse
    $jsonResponse = curl_exec($ch);
?>

Successful Response:

{
    "message": "Hello World",
    "rsp_msg": "success",
    "rsp_code": "0000",
    "transaction_id": "uniqueID1"
}

Response Codes

All API calls will respond with a rsp_code, you can check the table below to identify description of specific response codes.

0000 Response ok
1001 Error failed 2fa
1002 Error site suspended
1003 Error no data
1004 Error auth failure
1005 Error invalid data type
1006 Error invalid field count
1007 Error too long
1008 Error too short
1009 Error too early
1010 Error too late
1011 Error bad month
1012 Error not digits
1013 Error not numeric
1014 Error too small
1015 Error invalid ccy
1016 Error invalid country
1017 Error invalid ip address
1018 Error invalid activation key
1019 Error invalid msisdn
1020 Error expired
1021 Error too big
1022 Error invalid boolean
1023 Error client id not unique
1024 Error too many decimals
1025 Error not int
1026 Error invalid status
1027 Error downloads suspended
1028 Error invalid gender
1029 Error invalid address
1030 Error external system error
1031 Error invalid email
1032 Error email not unique
1033 Error device not unique
1034 Error invalid user
1035 Error invalid device
1036 Error auth rejected
1037 Error invalid message id
1038 Error message id not found
1039 Error nothing to do
1040 Error session id not found
1041 Error invalid id
1042 Error wrong id type
1043 Error auth timeout
1044 Error user not found
1045 Error device not found
1046 Error user blocked
1047 Error invalid email address
1048 Error invalid client
1049 Error last connected device
1050 Error no connected devices
1051 Error insufficient credit
1052 Error email waiting
1053 Error email alreadyverified
1054 Error no login message
1055 Error timeout
1056 Error pending
1057 Error login redirection
1058 Error pending login
1059 Error invalid affiliate
1060 Error auth rejected login
9997 Error system error
9998 Error security validation error
9999 Error general validation error