Uso del ID de Claris para la autenticación externa

Si desea utilizar FileMaker Data API, FileMaker Admin API o OData API con FileMaker Cloud, debe autenticarse mediante la cuenta del ID de Claris (no mediante una cuenta de IdP externo). FileMaker Cloud utiliza Amazon Cognito para la autenticación externa.

Amazon Cognito gestiona los usuarios mediante conjuntos de usuarios, que proporcionan servicios como, por ejemplo, el inicio de sesión, la autenticación con proveedores de identidad, la administración de perfiles y directorios de usuarios, y la supervisión de seguridad. (Consulte la sección sobre los conjuntos de usuarios de Amazon Cognito).

Para autenticarse mediante el ID de Claris:

  1. Recupere los valores de los parámetros UserPoolId y ClientId.

    Amazon Cognito requiere los parámetros UserPoolId y ClientId para la autenticación de usuarios. FileMaker Cloud proporciona el siguiente punto de conexión:

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

    El punto de conexión devuelve los siguientes resultados:

    {
        "errcode":"Correcto",
        "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
    }

    Nota  Los valores devueltos de Region y API_Host no se utilizan para la autenticación.

  2. Utilice Amazon Cognito Identity SDK for JavaScript para autenticar usuarios mediante Amazon Cognito. (Consulte Amazon Cognito Identity SDK for JavaScript). Utilice el ejemplo siguiente en el código de JavaScript para recuperar los valores del token del ID de Claris (Claris_ID_token) y el token de actualización del ID de Claris (Claris_ID_refresh_token).

    El token del ID de Claris se utiliza para la autenticación al utilizar FileMaker Data API, FileMaker Admin API o OData API y es válido durante una hora. El token de actualización del ID de Claris permite el uso de guiones para seguir ejecutándose después de que caduque el token del ID de Claris y es válido durante un año.

Notas 

  • Para utilizar las llamadas de FileMaker API con FileMaker Cloud, debe autenticarse primero con su cuenta del ID de Claris y recuperar los tokens de sesión necesarios. Los tokens son válidos durante una hora. Si ha pasado más de una hora desde la última autenticación del ID de Claris, las llamadas de la API pueden fallar con un error 401. Para resolver el problema, vuelva a autenticarse con la cuenta del ID de Claris y recupere los nuevos tokens de sesión.

Ejemplo

En este ejemplo:

  • Se utilizan los valores de UserPool_ID y Client_ID indicados arriba.

  • En nombre de usuario y contraseña, introduzca el nombre de usuario del ID de Claris y la contraseña.

  • Las cuatro líneas que empiezan por mfaRequired solo son necesarias cuando la autenticación multifactor (MFA) está activada para el ID de Claris.

  • El código se ha extraído de los ejemplos proporcionados por Amazon (consulte Acceder a los conjuntos de usuarios mediante Amazon Cognito Identity SDK for JavaScript).

Código de ejemplo:

var authenticationData = {
    Username : 'nombre de usuario',
    Password : 'contraseña',
};
var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
var poolData = {
    UserPoolId : 'us-west-2_NqkuZcXQY',
    ClientId : '4l9rvl4mv5es1eep1qe97cautn'
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
var userData = {
    Username : 'nombre de usuario',
    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('Introduzca el código de verificación' ,'');
        cognitoUser.sendMFACode(verificationCode, this);
    }
});