Claris ID를 외부 인증에 사용하기

FileMaker Data API, FileMaker Admin API 또는 OData API를 FileMaker Cloud와 함께 사용하려는 경우 Claris ID 계정(외부 IdP 계정 아님)을 통해 인증해야 합니다. FileMaker Cloud는 Amazon Cognito를 외부 인증에 사용합니다.

Amazon Cognito는 로그인, ID 공급자 인증, 사용자 디렉토리, 프로파일 관리 및 보안 모니터링과 같은 서비스를 제공하는 사용자 풀을 통해 사용자를 관리합니다. (Amazon Cognito 사용자 풀을 참조하십시오.)

Claris ID를 사용하여 인증하기:

  1. UserPoolId 및 ClientId 매개 변수의 값을 가져옵니다.

    Amazon Cognito는 사용자 인증을 위해 하나의 UserPoolId 및 하나의 ClientId를 요구합니다. FileMaker Cloud는 아래 엔드포인트를 제공합니다.

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

    엔드포인트는 다음의 결과를 반환합니다.

    {
        "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
    }

    참고  반환된 Region 및 API_Host 값은 인증에 사용되지 않습니다.

  2. Amazon Cognito를 통해 사용자를 인증하려면 JavaScript용 Amazon Cognito Identity SDK를 사용하십시오 (JavaScript용 Amazon Cognito Identity SDK를 참조하십시오.) JavaScript 코드에서 아래 예제를 사용하여 Claris ID 토큰(Claris_ID_token) 및 Claris ID refresh 토큰(Claris_ID_refresh_token)의 값을 가져올 수 있습니다.

    Claris ID 토큰은 FileMaker Data API, FileMaker Admin API 또는 OData API를 사용할 때 인증에 활용되며, 1시간 동안 유효합니다. Claris ID refresh 토큰으로 스크립트를 Claris ID 토큰이 만료된 후에도 계속 실행되도록 할 수 있으며 1년 동안 유효합니다.

참고 

  • FileMaker Cloud에서 FileMaker API 호출을 사용하려면, 먼저 Claris ID 계정을 사용하여 인증하고 필요한 세션 토큰을 가져와야 합니다. 해당 토큰은 1시간 동안 유효합니다. 마지막 Claris ID 인증 이후 1시간 이상이 경과한 경우에는 401 오류가 표시되며 API 호출이 실패할 수 있습니다. 문제를 해결하려면 Claris ID 계정을 사용하여 다시 인증하고 새로운 세션 토큰을 가져오십시오.

예제

이 예제에서

예제 코드:

var authenticationData = {
    Username : 'username',
    Password : 'password',
};
var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
var poolData = {
    UserPoolId : 'us-west-2_NqkuZcXQY',
    ClientId : '4l9rvl4mv5es1eep1qe97cautn'
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
var userData = {
    Username : 'username',
    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('확인 코드를 입력하십시오.' ,'');
        cognitoUser.sendMFACode(verificationCode, this);
    }
});