To use the FibriCheck API, there are two levels of authentication:
Application authentication: your application needs to have credentials to communicate with FibriCheck
User authentication: the end user needs to have proper credentials to authenticate against FibriCheck
FibriCheck supports OAuth 1.0 and OAuth 2.0 mechanisms for authentication and authorization of users.
Authentication via OAuth 1.0
When using OAuth 1.0, you need to add 2 sets of credentials to each request to the FibriCheck API:
The Consumer Key and Consumer Secret, identify the application and are always required. We provide these credentials to you.
The Access Token and Token Secret identify the user and are always required except for the user registration and authentication call. The authentication call that exchanges a e-mail/password combination for an Access Token and Token Secret is described below.
Keep in mind that an access token and token secret must always be used with the consumer key/secret they were generated with.
The remainder of this page discusses how to authenticate existing users, take a look here to learn more about registering new users.
SDK
import'package:flutter_fibricheck_sdk/flutter_fibricheck_sdk.dart';// In this example we use the localstorage as a storage option for the credentials.// Other packages or persistent storage methods can be used as well.// More information: https://pub.dev/packages/localstorage_storage =newLocalStorage('my_app');_sdk =FLFibriCheckSdk.client("{consumerKey}", "{consumerSecret}");voidonConsentNeeded(List<Consent> documentsToSign) {for (var document in documentsToSign) { {// 1. Request approval from the user// 2. Pass the document back to the sdk _sdk.giveConsent(document); } } }var res =await _sdk.authenticateWithEmail(ParamsOauth1WithEmail(email:"{userEmail}", password:"{userPassword}"), (consents) {_onConsentNeeded(consents); }, );//save tokenstorage.setItem('token', res.token);//save token secretstorage.setItem('tokenSecret', res.tokenSecret);
The tokenData information can be used to authenticate the user for subsequent API calls.
var res =await _sdk.authenticateWithToken(ParamsOauth1WithToken(token: storage.getItem('token'), tokenSecret: storage.getItem('tokenSecret')), (consents) {_onConsentNeeded(consents); },)
In the following example we use @react-native-async-storage/async-storage to store the credentials. You are free to use any other storage option in your application.
import AsyncStorage from'@react-native-async-storage/async-storage';(async () => {constsdk=client({ consumerKey:'', consumerSecret:'', });// Function that handles required consents constonConsentNeeded= (legalDocumentsUpdated:Consent[]) => {legalDocumentsUpdated.forEach((document) => {// 1. Request approval from the user// 2. Pass the document back to the sdksdk.giveConsent(document); }); };consttokenData=awaitsdk.authenticate({ email:'', password:'', }, onConsentNeeded);AsyncStorage.setItem('tokenData',JSON.stringify(tokenData));})();
The tokenData information can be used to authenticate the user for subsequent API calls.
{"code": 106,"name": "AUTHENTICATION_EXCEPTION","message": "this password email combination is unknown"}
{"code": 109,"name": "OAUTH_SIGNATURE_EXCEPTION","message": "The oAuth signature is invalid"}
To implement the OAuth 1 protocol, additional parameters such as a request signature and nonce need to be added to the request. The FibriCheck Postman workspace contains an example request to authenticate successfully.
Also, libraries exist for each platform that facilitates performing OAuth 1.0 requests, for example node-oauth in the Node.JS ecosystem.
Authentication via OAuth 2.0
When you choose to authenticate via OAuth 2.0 (RFC 6749), you will receive a clientId and clientSecret.
Each of the API calls below are protected using the client_secret_basic method. The Authorization header must be in the Basic: encodedString format, where the encodedString is a result of Base64 encoding of OAuth client’s clientId:clientSecret.
With every new access token, a new refresh token is provided. Make sure always to store the latest refresh token.
Token Lifetime
The different OAuth2.0 tokens have a limited lifetime
Access token: 5 minutes
Refresh token: until used or until revoked
Disable Authentication
Rest API
You can disable user authentication/access by removing their authentication tokens. This means the user will be logged out and must log in again to continue.
Execute an API call with the following payload to remove their authentication tokens: