高度なタスク > 外部認証での FileMaker ID の使用
 

外部認証での FileMaker ID の使用

FileMaker Cloud で Claris FileMaker Data API または OData API を使用する場合は、FileMaker ID を使用して認証する必要があります。FileMaker Cloud では外部認証に Amazon Cognito を使用します。

Amazon Cognito ではユーザプールを使用してユーザを管理します。サインイン、アイデンティティプロバイダを使用した認証、ユーザディレクトリとユーザプロファイルの管理、およびセキュリティ監視などのサービスを提供します。(Amazon Cognito ユーザプールを参照してください。)

FileMaker ID を使用して認証するには、次の操作を行います:

1. UserPoolId および ClientId のパラメータの値を取得します。

Amazon Cognito でユーザを認証するには UserPoolId および ClientId が必要です。FileMaker Cloud では次のエンドポイントを提供しています:

https://www.ifmcloud.com/endpoint/userpool/
0.0.0.my.filemaker.com.jsonf

このエンドポイントは次の結果を返します:

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

メモ  エンドポイントから返された Region および API_Host の値は認証に使用しません。

2. Amazon Cognito でユーザを認証するには Amazon Cognito Identity SDK for JavaScript を使用します。(Amazon Cognito Identity SDK for JavaScript を参照してください。) JavaScript コードで次の例を使用して FileMaker ID トークン (FileMaker_ID_token) および FileMaker ID 更新トークン (FileMaker_ID_refresh_token) の値を取得します。

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

この例についての補足:

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

<ユーザ名> および <パスワード> には FileMaker ID ユーザ名およびパスワードを入力

コードの例:

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 FileMaker_ID_token = result.idToken.jwtToken;
var FileMaker_ID_refresh_token = result.refreshToken.token;
},
onFailure: function(err) {
alert(err);
},
});