使用 Claris ID 进行外部验证
要将 FileMaker Data API、FileMaker Admin API 或 OData API 与 FileMaker Cloud 一起使用,必须使用 Claris ID 帐户(非外部 IdP 帐户)验证身份。FileMaker Cloud 使用 Amazon Cognito 进行外部验证。
Amazon Cognito 通过用户池管理用户,用户池提供登录、基于身份提供商系统的验证、用户目录和配置文件管理以及安全监控等服务。(请参阅 Amazon Cognito 用户池。)
要使用 Claris ID 进行验证:
-
检索 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 值不用于验证。
-
使用 JavaScript 的 Amazon Cognito Identity SDK 通过 Amazon Cognito 验证用户身份。(请参阅 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 时用于身份验证,有效期为一小时。Claris ID 刷新令牌可允许脚本在 Claris ID 令牌到期后继续运行,其有效期为一年。
注释
-
要在 FileMaker Cloud 中执行 FileMaker API 调用,您必须先验证 Claris ID 帐户,并获取必要的会话令牌。令牌的有效期为一小时。如果距上次 Claris ID 验证超过了一小时,API 调用将会失败,并显示 401 错误。要解决此问题,请使用 Claris ID 帐户再次验证,并获取新的会话令牌。
示例
在本例中:
-
使用了上文中的
UserPool_ID和Client_ID值 -
对于
用户名和密码,请输入 Claris ID 用户名和密码 -
四个以
mfaRequired开头的行仅在为 Claris ID 启用了多重身份验证 (MFA) 时才需要 -
代码提取自 Amazon 提供的示例(请参阅使用 JavaScript 的 Amazon Cognito Identity SDK 访问身份池。)
示例代码:
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);
}
});