[FileMaker] 登録端末からのアクセスのみを許可する

FileMaker(特に FileMaker Server)において、登録したデバイス以外からのアクセスをブロックし、これでファイルのセキュリティーを高めることにしてみた。

環境:FileMaker Pro 18 Advanced

考え方:端末固有の PersistentID を最初に登録しておき、次回以降は PersistentID が合致したらファイルが開き、合致しなければファイルが開かないようにする。ただ、一応何らかの事情で PersistentID を認識しなくなった場合も、パスワード入力でファイルが開けるようにもする。

(0)TableA という名前のテーブル、LayoutA という名前のレイアウトを持つファイルがあるとする。

(1)PersistentID 管理用のテーブル PersistentID を作る。

同時に PersistentID という名前のテーブルもできる。

また、認証ダイアログが表示されている間用の一時的なレイアウト LayoutDummy を作成する。レイアウト上は何も置かなくてもいい。

(2)1に以下の2つのテキストフィールドを作成する。

・User:端末を区別するメモ。端末名やユーザー名など。
・PersistentID:PersistentID そのもの

(3)現在の端末で PersistentID を取得する以下のスクリプトを作成する。

Go to Layout [ “PersistentID” (PersistentID) ; Animation: None ]

New Record/Request
Set Field [ PersistentID::PersistentID ; Get ( PersistentID ) ]

これで PersistentID フィールドに現在の端末の PersistentID が入ったはずだ。

(4)認証用スクリプトは以下ようになる。

# PersistentIDレイアウトへ
Go to Layout [ “PersistentID” (PersistentID) ; Animation: None ]

# 検索
Set Error Capture [ On ]
Enter Find Mode [ Pause: Off ]
Set Field [ PersistentID::PersistentID ; Get ( PersistentID ) ]
Perform Find []

If [ Get ( LastError ) = 401 ]
# 最初に別のレイアウトへ行かないと、次のダイアログ表示中に PersistentID テーブルの中身が見えてしまう。
Go to Layout [ “LayoutDummy” ( TableA ) ; Animation: None ]
# 登録されていない端末では、Input Fields で変数 $passwordChallnge を入力させるようにする。
Show Custom Dialog [ "PersistentIDが登録されていません。" ; $passwordChallenge ]
Show All Records
# 正しいパスワードを 123 だとする。
If [ $passwordChallenge = "123" ]
Show Custom Dialog [ “パスワードが一致しました。ファイルを開きます。” ]
Go to Layout [ “LayoutA” ( Table ) ; Animation: None ]
Else
Show Custom Dialog [ “パスワードが違います。ファイルを閉じます。” ]
Close File [ Current File ]
End If
Else
# PersistentID が登録された端末の場合は、普通にファイルを開く。
Go to Layout [ “LayoutA” ( Table ) ; Animation: None ]
Show Custom Dialog [ "PersistentID が登録済みです。ファイルを開きます。” ]
End If

(5)4を File > File Options > Script Triggers > OnFirstWindowOpen に登録する。

これで事前に登録したデバイスからアクセスすると普通にファイルが開き、それ以外だとファイルが閉じる(or パスワード入力でファイルが開く)ようになった。

参考:
【FileMaker】検索件数が0件のときにメッセージを出す - Qiita
https://qiita.com/tyuma/items/11d8da9ce72442cc8bb1

この記事が気に入ったらサポートをしてみませんか?