4.7K Views
October 27, 22
スライド概要
Claris Engage Japan 2022 T-16講演資料
Claris FileMaker 認定デベロッパ、kintone認定 アプリデザインスペシャリスト(2020年2月)、kintone認定 カスタマイズスペシャリスト(2020年3月)。
オンラインイベント 社内システムから Claris FileMaker Cloud に 接続する際に知っておきたい ポイント 松尾 篤 セッション ID: T-16
松尾 篤 株式会社エミック
自己紹介 • 松尾篤 • 株式会社エミック(東京都杉並区)代表取締役社長 • Claris FileMaker 認定デベロッパ • kintone認定 アプリデザインスペシャリスト(2020年2月) • kintone認定 カスタマイズスペシャリスト(2020年3月)
株式会社エミック • Claris FileMaker 対応ホスティングサービスを1998年から提供 • 定額制オンライン対面開発サービス • WordPressを利用したWebアプリ開発 • 各種クラウドサービスとの連携の設計および設定 https://www.emic.co.jp/
結論 • 社内システムや Web サーバーから API を使って Claris FileMaker Cloud に 接続する際には Claris ID アカウントの認証とトークンの理解がポイント • Claris FileMaker Server で API を使う場合と違い FileMaker Cloud の場合 には Claris ID アカウントの認証が必要 • Claris ID アカウント認証後に取得できる1年間有効な「Claris ID 更新トーク ン」であれば 2 ステップ検証手続き不要で「Claris ID トークン」を取得可能
今回の話題 • Claris FileMaker のサーバー製品で使用できる Web API • FileMaker Server の Web API における認証の流れ • FileMaker Cloud の Web API における認証の流れ • Claris ID 更新トークンから Claris ID トークンを取得するには
参考)Claris Connect • Claris Connect であればより手軽に FileMaker Cloud に接続可能
Claris FileMaker のサーバー製品で使用できる Web API
2種類のサーバー製品 • Claris FileMaker Cloud • Claris 純正クラウドサービス • Claris FileMaker Server • オンプレミス(自社サーバー)向けサーバー製品
両サーバー製品で使用できる Web API • Claris FileMaker Admin API • Claris FileMaker Data API • OData API ➡Claris FileMaker を使用していないシステムやサービス、Webサーバーから FileMaker ServerもしくはFileMaker Cloudに接続する際に使用
サーバー製品で使用できる Web API Claris FileMaker Cloud Claris FileMaker Server Claris FileMaker Admin API ✅ ✅ Claris FileMaker Data API ✅ ✅ OData API ✅ ✅
サーバー製品で使用できる Web API 用途 FileMaker Admin API サーバー管理用 (Admin Console の代替) FileMaker Data API データ管理用 (レイアウトやポータルなどの 機能と連動して使用可) OData API データ管理用 (テーブルや索引の作成・削 除、フィールド追加等が可) 応答データ形式 備考 JSON 製品によって使用できる機能が 異なる JSON API 経由で送信された データ転送量の上限が存在 (OData API も同様) JSON もしくは XML バージョン19.5.1以降で macOS および Windows 版 FileMaker Server でも使用可
FileMaker Server の Web API における 認証の流れ
API で FileMaker Server に接続する場合 • 対象となるアカウント名とパスワードを用いて Base64 エンコード文字列を 生成してAuthorizationヘッダーに含めることで認証が可能 • アカウント名とパスワードの間には「:」を追加 • アカウント名が「guest」、パスワードが「sample-password」の場合 Authorization: Basic Z3Vlc3Q6c2FtcGxlLXBhc3N3b3Jk
API で FileMaker Server に接続する場合 • FileMaker Admin APIでは • アクセストークンの要求(Admin Console 管理者のユーザ名とパスワード を使用) • 取得したアクセストークン(Admin API トークン)を用いて処理を実行 • アクセストークンの無効化
curl コマンドを使った接続例 (FileMaker Admin API:アクセストークンの要求) curl -X POST -H "Content-Type: application/json" \ -H "Authorization: Basic Z3Vlc3Q6c2FtcGxlLXBhc3N3b3Jk" \ https://example.com/fmi/admin/api/v2/user/auth
curl コマンドを使った接続例 (FileMaker Admin API:データベースの一覧を取得) curl -X GET -H "Content-Type: application/json" \ -H "Authorization: Bearer <取得したアクセストークン>" \ https://example.com/fmi/admin/api/v2/databases
API で FileMaker Server に接続する場合 • FileMaker Data APIでは • データベースセッションへのログイン(fmrest拡張アクセス権が有効になっ ているアカウント名とパスワードを使用) • 取得したアクセストークン(セッショントークン/Data API トークン)を 用いて処理を実行 • データベースセッションからのログアウト
curl コマンドを使った接続例 (FileMaker Data API:データベースセッションへのログイン) curl -X POST -d "{}" -H "Content-Type: application/json" \ -H "Authorization: Basic Z3Vlc3Q6c2FtcGxlLXBhc3N3b3Jk" \ https://example.com/fmi/data/v2/databases/DBNAME/sessions
curl コマンドを使った接続例 (FileMaker Data API:レコードの範囲の取得) curl -X GET -H "Content-Type: application/json" \ -H "Authorization: Bearer <取得したアクセストークン>" \ https://example.com/fmi/data/v2/databases/DBNAME/layouts/ LAYOUTNAME/records
API で FileMaker Server に接続する場合 • OData APIでは • fmodata拡張アクセス権が有効になっているアカウント名とパスワードを 用いて Base64 エンコード文字列を生成してAuthorizationヘッダーに含め ることで認証が可能 • アクセストークンを要求および無効化する手順は不要
curl コマンドを使った接続例 (OData API:テーブルのレコードの要求) curl -X GET \ -H "Authorization: Basic Z3Vlc3Q6c2FtcGxlLXBhc3N3b3Jk" \ https://example.com/fmi/odata/v4/DBNAME/TABLENAME
FileMaker Cloud の Web API における 認証の流れ
API で FileMaker Cloud に接続する場合 • FileMaker Server で API を使う場合と違い FileMaker Cloud の場合には Claris ID アカウントの認証が必要 • Amazon Cognito の認証が可能な AWS SDK を使用して Claris ID トーク ンを取得(プログラミングの知識が必要)
Claris ID アカウント認証後に取得できるトークン Claris ID トークン Claris ID 更新トークン (Claris ID リフレッシュトークン) 有効期間 備考 1時間 FileMaker Data API、FileMaker Admin API または OData API を使用する際の認証に使用 1年間 Claris ID トークンの期限が切れた後もスクリ プトを継続して動作させることが可能 Claris Customer Console ヘルプ Claris Customer Console ヘルプには詳細に Amazon Cognito アクセストークン には未記載 ついては未記載
API で FileMaker Cloud に接続する場合 • AWS SDK を使用して Claris ID トークンを取得する方法 ➡Claris ID を認証し、FileMaker Admin API および Data API へのアクセ スを許可する(Claris ナレッジベース) https://support.claris.com/s/answerview?anum=000035271&language=ja
サンプルプログラムの実行に必要 • Claris FileMaker Cloud • FileMaker Cloud Admin Console で FileMaker Data API を有効にする • Claris ID に FileMaker Data API 拡張アクセス権( fmrest )を付与して ファイルをホストする
ナレッジベースで紹介されているNode.jsのサンプル • Node.jsのインストールが必要 • 必要なモジュールのインストールも必要 • amazon-cognito-identity-js • node-fetch • readline-sync
ナレッジベースで紹介されているNode.jsのサンプル • node-fetchのバージョン3ではなくバージョン2を使用する前提のサンプル • npm install node-fetch ➡npm install node-fetch@2
ナレッジベースで紹介されているNode.jsのサンプル • nodeコマンドを使ってサンプルコードを実行 実行例: node adminapi̲sample.js <CID Email> <CID Password> <Your Host Name>.account. lemaker-cloud.com fi • 実行時にエラーが発生する場合はサンプルコードの一部を書き換える
サンプルコードの書き換え例 • onSuccess: (tokens) => { ➡onSuccess: function (tokens) { • onFailure: (err) => { ➡onFailure: function (err) {
サンプルコードの書き換え例 • mfaRequired: (codeDeliveryDetails) => { ➡mfaRequired: function (codeDeliveryDetails) {
Claris ID と 2 ステップ検証 • Claris ID アカウントで 2 ステップ検証が設定されている場合にはサンプル コードを実行するたびにテキストメッセージで送られてくる検証コード(数 字6桁)の入力が必要 • セキュリティ上 2 ステップ検証は有効化しておくべき • Claris ID 更新トークン(Claris ID リフレッシュトークン)を使えば 検証コードの入力ステップを省略可能
API で FileMaker Cloud に接続する場合 • FileMaker Admin API および FileMaker Data API では • 「FMID 」と取得した Claris ID トークンを Authorization ヘッダーに含め ることで API を使うためのアクセストークンを取得可能 • Authorization: FMID <取得した Claris ID トークン>
API で FileMaker Cloud に接続する場合 • OData API では • 「FMID 」と取得した Claris ID トークンを Authorization ヘッダーに含め ることで接続可能 • Authorization: FMID <取得した Claris ID トークン>
curl コマンドを使った接続例 (FileMaker Admin API:アクセストークンの要求) curl -X POST -H "Content-Type: application/json" \ -H "Authorization: FMID <取得した Claris ID トークン>" \ https://< FileMaker Cloud のホスト名>/fmi/admin/api/v2/user/auth
Claris ID 更新トークンから Claris ID トークンを 取得するには
Claris ID 更新トークン • Claris ID 更新トークンから Claris ID トークンを取得することが可能 • Claris ID 更新トークンは1年間有効(1年以内に再取得が必要) • Claris ID 更新トークンは 2 ステップ検証の検証コード入力を省略できるた め厳重に管理する必要がある
Claris ID 更新トークンを取得するには • AWS SDKを使用する必要がある • Claris ナレッジベースで紹介されている Node.js 用サンプルコードの ファイルを複製してサンプルコードを一部書き換えることで Claris ID 更新トークンを取得することが可能
ナレッジベースで紹介されているNode.jsのサンプル • Claris ID を認証し、FileMaker Admin API および Data API へのアクセ スを許可する(Claris ナレッジベース) https://support.claris.com/s/answerview?anum=000035271&language=ja
サンプルコードの書き換え例 • let idToken = tokens['idToken']['jwtToken']; ➡let idToken = tokens['idToken']['jwtToken']; console.log(tokens.refreshToken.token);
ナレッジベースで紹介されているNode.jsのサンプル • nodeコマンドを使って実行 実行例: fi node adminapi̲sample2.js <CID Email> <CID Password> <Your Host Name>.account. lemaker-cloud.com
Claris ID 更新トークンからClaris ID トークンの取得 • AWS SDKを使用する必要がある • Claris ナレッジベースで紹介されている Node.js 用サンプルコードの ファイルを複製してサンプルコードを一部書き換えることで Claris ID 更新トークンから Claris ID トークンを取得することが可能
サンプルコードの書き換え例 • let password = argv[3] ➡let refreshToken = argv[3] • console.log(tokens.refreshToken.token); ➡(削除)
サンプルコードの書き換え例
• getCognitoTokens(cognitoUser, userName, password, (tokens) => {
➡ let CognitoRefreshToken = new AmazonCognitoIdentity.CognitoRefreshToken({RefreshToken: refreshToken});
cognitoUser.refreshSession(CognitoRefreshToken, (err, tokens) => {
ナレッジベースで紹介されているNode.jsのサンプル • nodeコマンドを使って実行 実行例: fi node adminapi̲sample3.js <CID Email> <CID Refresh Token> <Your Host Name>.account. lemaker-cloud.com
Claris ID アカウント認証後に取得できるトークン Claris ID トークン Claris ID 更新トークン (Claris ID リフレッシュトークン) 有効期間 備考 1時間 FileMaker Data API、FileMaker Admin API または OData API を使用する際の認証に使用 1年間 Claris ID トークンの期限が切れた後もスクリ プトを継続して動作させることが可能 Claris Customer Console ヘルプ Claris Customer Console ヘルプには詳細に Amazon Cognito アクセストークン には未記載 ついては未記載
Claris ID アカウント認証後に取得できるトークン Claris ID トークン Claris ID 更新トークン (Claris ID リフレッシュトークン) 有効期間 備考 1時間 FileMaker Data API、FileMaker Admin API または OData API を使用する際の認証に使用 1年間 AWS SDK を使うことで 2 ステップ認証用の 検証コードを入力せずに Claris ID トークン を取得できる Claris Customer Console ヘルプ Claris Customer Console ヘルプには詳細に Amazon Cognito アクセストークン には未記載 ついては未記載
まとめ
まとめ • 社内システムや Web サーバーから API を使って Claris FileMaker Cloud に 接続する際には Claris ID アカウントの認証とトークンの理解がポイント • Claris FileMaker Server で API を使う場合と違い FileMaker Cloud の場合 には Claris ID アカウントの認証が必要 • Claris ID アカウント認証後に取得できる1年間有効な「Claris ID 更新トーク ン」であれば 2 ステップ検証手続き不要で「Claris ID トークン」を取得可能
参考)fmctoken https://www.emic.co.jp/course/seminar202207/ • エミックで開発したコマンドラインツール • Claris ID ユーザ名、パスワードおよび検証コードを入力することで Claris ID 更新トークンやClaris ID トークンを取得可能 • Linux、macOS および Windows で使用可能(無料) • ダウンロードにはエミックラーニングへのご登録が必要