外部認証での Claris ID の使用

FileMaker Cloud で FileMaker Data API、FileMaker Admin API または OData API を使用するには、外部 IdP アカウントではなく、Claris ID アカウントを使用して認証する必要があります。FileMaker Cloud では外部認証に Amazon Cognito を使用します。

Amazon Cognito ではユーザプールを使用してユーザを管理します。サインイン、アイデンティティプロバイダを使用した認証、ユーザディレクトリとユーザプロファイルの管理、およびセキュリティ監視などのサービスを提供します。(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 でユーザを認証するには Amazon Cognito Identity SDK for JavaScript を使用します。(Amazon Cognito Identity SDK for JavaScript (英語) を参照してください。) JavaScript コードで次の例を使用して Claris ID トークン (Claris_ID_token) および Claris ID 更新トークン (Claris_ID_refresh_token) の値を取得します。

    Claris ID トークンは、FileMaker Data API、FileMaker Admin API または OData API を使用する際の認証に使用され、1 時間有効です。Claris ID 更新トークンを使用すると Claris ID トークンの期限が切れた後もスクリプトを継続して動作させることができます。更新トークンは 1 年間有効です。

メモ 

  • FileMaker Cloud で FileMaker API 呼び出しを使用するには、最初に Claris ID アカウントを使用して認証し、必要なセッショントークンを取得する必要があります。トークンは 1 時間有効です。最後の Claris ID 認証から 1 時間以上が経過した場合、API 呼び出しは 401 エラーで失敗する場合があります。この問題を解決するには、Claris ID アカウントを使用して再度認証し、新しいセッショントークンを取得取得します。

この例についての補足:

  • 上記の UserPool_ID および Client_ID の値を使用

  • ユーザ名およびパスワードには Claris ID ユーザ名およびパスワードを入力

  • mfaRequired で始まる 4 行は Claris ID で多要素認証 (MFA) が有効になっている場合にのみ必要

  • コードは Amazon が提供している例から引用 (Accessing Your User Pools using the Amazon Cognito Identity SDK for JavaScript (英語) を参照してください。)

コードの例:

var authenticationData = {
    Username : 'ユーザ名',
    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 : 'ユーザ名',
    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('Please input verification code' ,'');
        cognitoUser.sendMFACode(verificationCode, this);
    }
});