Utilisation de Claris ID pour l'authentification externe

Si vous souhaitez utiliser FileMaker Data API, FileMaker Admin API ou l'API OData avec FileMaker Cloud, vous devez vous authentifier à l'aide de votre compte Claris ID (et non d'un compte de fournisseur d'identité externe). FileMaker Cloud utilise Amazon Cognito pour l'authentification externe.

Amazon Cognito gère les utilisateurs dans des groupes d'utilisateurs en leur proposant des services du type connexion, authentification par l'intermédiaire de fournisseurs d'identité, annuaire d'utilisateurs, gestion des profils et surveillance de la sécurité. (Consultez Groupes d'utilisateurs Amazon Cognito.)

Pour vous authentifier avec Claris ID :

  1. Récupérez les valeurs des paramètres UserPoolId et ClientId.

    Amazon Cognito nécessite un paramètre UserPoolId et un paramètre ClientId pour authentifier les utilisateurs. FileMaker Cloud fournit le point de terminaison suivant :

    https://www.ifmcloud.com/endpoint/userpool/2.2.0.my.claris.com.json

    Le point de terminaison renvoie les résultats suivants :

    {
        "errcode":"Ok",
        "errmessage":null,
        "data":{
            "Region": "us-west-2",
            "UserPool_ID":"us-west-2_NqkuZcXQY",
            "Client_ID":"4l9rvl4mv5es1eep1qe97cautn",
            "API_Host": "api-cp-global.ifmcloud.com/2-2",
            "FCC_Host": "console.claris.com"
        },
        "csrid":null
    }

    Remarque  Les valeurs Region et API_Host renvoyées ne servent pas à l'authentification.

  2. Utilisez le kit SDK Amazon Cognito Identity pour JavaScript pour authentifier un utilisateur via Amazon Cognito. (Consultez la section SDK Amazon Cognito Identity pour JavaScript.) Utilisez l'exemple ci-dessous dans votre code JavaScript pour récupérer les valeurs du jeton Claris ID (Claris_ID_token) et du jeton d'actualisation Claris ID (Claris_ID_refresh_token).

    Le jeton Claris ID sert à vous authentifier lorsque vous utilisez FileMaker Data API, FileMaker Admin API ou l'API OData. Il est valable pendant une heure. Le jeton d'actualisation Claris ID permet aux scripts de continuer à s'exécuter une fois le jeton Claris ID arrivé à expiration. Il est valable pendant un an.

Remarques 

  • Pour utiliser les appels API FileMaker avec FileMaker Cloud, vous devez d'abord vous authentifier à l'aide de votre compte Claris ID et récupérer les jetons de session requis. Les jetons sont valables pendant une heure. Si plus d'une heure s'est écoulée depuis la dernière authentification de Claris ID, les appels API peuvent échouer avec une erreur 401. Pour résoudre ce problème, authentifiez-vous à nouveau en utilisant le compte Claris ID et récupérez de nouveaux jetons de session.

Exemple

Dans cet exemple :

  • les valeurs UserPool_ID et Client_ID citées plus haut sont utilisées

  • pour nomutilisateur et motdepasse, saisissez le nom d'utilisateur Claris ID et le mot de passe

  • les quatre lignes commençant par mfaRequired ne sont nécessaires que lorsque l'authentification multifactorielle (MFA) est activée pour Claris ID

  • le code est tiré d’exemples fournis par Amazon (consultez Accéder à vos groupes d'utilisateurs à l'aide du SDK Amazon Cognito Identity pour JavaScript.)

Exemple de code :

var authenticationData = {
    Username : 'nomutilisateur',
    Password : 'motdepasse',
};
var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
var poolData = {
    UserPoolId : 'us-west-2_NqkuZcXQY',
    ClientId : '4l9rvl4mv5es1eep1qe97cautn'
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
var userData = {
    Username : 'nomutilisateur',
    Pool : userPool
};
var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: function (result) {
        var Cognito_access_token = result.getAccessToken().getJwtToken();
        var Claris_ID_token = result.idToken.jwtToken;
        var Claris_ID_refresh_token = result.refreshToken.token;
    },
    onFailure: function(err) {
        alert(err);
    },
    mfaRequired: function(codeDeliveryDetails) {
        var verificationCode = prompt('Veuillez saisir le code de validation' ,'');
        cognitoUser.sendMFACode(verificationCode, this);
    }
});