使用 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); } });