セキュリテイ上・パフォーマンス上の理由から、4D Mobile (Wakanda server) 要求を使用しての4Dデータベースのテーブル、データ、そしてメソッドへの接続は、有効化され、明示的に認証されている必要があります。そのためには3段階のアクセスの設定をしなければなりません:
4D Mobile サービスのスタートアップ 4D Mobile アクセスの管理(任意ですが推奨されます) それぞれのデータベースオブジェクト(テーブル、属性、プロジェクトメソッド)の4D Mobile サービスへの公開は必要に応じて個別に設定する必要があります。初期設定では:テーブルと属性は全て4D Mobileからアクセス可能 プロジェクトメソッドは4D Mobileからアクセス不可
デフォルトとして、4D Server は4D Mobile 要求には反応しません。Wakanda/4Dコネクターの設定ができるようにこれらの要求が処理されるようにするためには、4D Mobile サービスを有効化する必要があります。
注: 4D Mobile サービスは 4D HTTP サーバーを使用します。そのため、4D Webサーバーまた4D Serverが開始されていることを確認して下さい。
4D Mobile サービスを有効化するためには以下の手順に従って下さい :
データベース設定においてWebのページの4D Mobile タグをクリックします。 4D Mobile サービスを有効化 のオプションにチェックをします: Wakanda 4D Mobile サービスが有効化されると、「警告:アクセス権が正しく設定されているか確認して下さい。」という警告メッセージが表示されます。これは4D Mobile 接続が適切に管理されていない限り、デフォルトでデータベースオブジェクトへは自由にアクセスできてしまうためです(詳細は以下を参照して下さい)。
4D Mobile 接続の管理とは、Wakanda リクエストの後に、4D側でそのセッションを開くかどうかの認証をするということです。
Wakanda 4D Mobile アクセスの一部としてチェックされる識別子は、以下によって実行された接続リクエストの際に送信された名前とパスワードです:
包括的に4D Mobile接続を管理する方法は二つあります:
これらの管理モードはどちらかしか選ぶことができません。On 4D Mobile Authentication データベースメソッド が定義されていた場合、4Dパスワードによる自動アクセス管理は無効化されます。
警告:もしこれら二つの管理モードがどちらも有効化されていなかった場合、4D Mobile を通してのデータベースへのアクセスは常に受理されます(これは推奨されません)。
4D では、Wakanda アプリケーションから4D サーバーへのリンクを設定できる4Dユーザーのグループを指定することが出来ます。 以下の手順でアカウントを指定して下さい:
データベース設定の画面からWeb→4D Mobile のページを表示。 アクセス権のエリア内の「読み込み/書き出し」のボックスから使用するグループを選択します: 初期設定では、メニューには<すべて> と表示されています。これは4D Mobile 接続は全てのユーザーにオープンであるという状態を示しています。 グループの指定が終わると、そのグループに所属するユーザーのみがWakanda リクエストを通して4Dへとアクセスできるようになり、4D Server上で例えば mergeOustideCatalog() メソッド等を使用してセッションを開くことができるということです。このグループに所属していないアカウントの場合は、4Dはリクエストの送信者に対して認証エラーを返します。
この設定を有効にするために以下の点に注意して下さい:
On 4D Mobile Authentication データベースメソッド を使用することによりWeb Serverエンジンに送られた4D Mobile 接続のアクセス権を自在に管理できるようになります。メソッドが定義されると、サーバーが4D Mobile リクエストを受けた時に4D または4D Serverから自動的に呼び出されます。
Wakanda Serverから4D Mobile セッションを開くリクエストが来ると(一般的なケース)、接続の識別子がリクエストのヘッダーに供給されます。続いて On REST Authentication データベースメソッドが呼ばれこれらの識別子を評価します。4D データベースのユーザーのリストを使用することもできますし、独自の識別子のテーブルを使用することもできます。
詳細な情報に関しては、4D Language Referenc e の On 4D Mobile Authentication データベースメソッド の詳細を参照して下さい。
Wakanda 4D Mobile サービスが4D データベース内で有効化されると、デフォルトで4D Mobile セッションは全てのテーブルとフィールドにアクセスすることができ、またそのデータを使用することが出来ます。例えば、あるデータベースに[Employee]というテーブルがあった場合、Wakanda Server側で以下の様に記述することでデータを取得することができます:
var emp=ds.Employee.query("name == 'Martin'");
//名前のフィールドが`Martin`である従業員の全データを返します。 Note: 「非表示」のオプションにチェックがされている4D のテーブル/フィールドに関しても、4D Mobile へと公開されます。
さらにWakandaサーバーは4D データベースのプロジェクトメソッドにアクセスることもできます。しかしながら、セキュリティ上の理由からこのアクセスはデフォルトでは無効化されています。
データベースのオブジェクトの4D Mobile への公開をカスタマイズしたい場合は:
公開したくないテーブル/フィールドは「RESTサービスで公開」のチェックを外します。 公開したいテーブル/フィールドは「RESTサービスで公開」にチェックをします。 4D Mobile リクエストが認証されていないリソース(テーブルまたはプロジェクトメソッド)にアクセスをしようとした場合、4Dはエラーを返します。
デフォルトでは、全てのテーブルは4D Mobileサーバーに公開されています。
セキュリティ上の理由からデータベースの一部のテーブルのみ4D Mobileサーバーに公開したいという場合があるかもしれません。しかし、ユーザー名とパスワードを記録した[Users]というテーブルを作成していた場合は、これは公開しない方がよいでしょう。
テーブルの4D Mobile サーバーでの公開は以下の手順で修正します:
ストラクチャーエディター内で公開したいテーブルのインスペクターを表示します。 デフォルトでは、4D Mobile サービスで公開 のオプションにチェックがされています: 4D Mobile サーバーで公開 のオプションのチェックを外します。 または 公開するテーブルに関してはオプションにチェックをしてください。 公開・非公開を修正したいテーブルそれぞれに関して上記の操作をして下さい。
デフォルトでは、4Dフィールドは全て4D Mobile サーバーで公開されています。
しかしテーブル内のフィールドのうち、4D Mobile サーバーで公開したくないものもあるでしょう。例えば、[Employees]というテーブルの給料のフィールドなどは公開したくないかもしれません。
フィールドごとの4D Mobile 公開については以下の様に修正します:
ストラクチャーエディター内で公開したくないフィールドのインスペクターを表示します。 デフォルトでは、4D Mobile サービスで公開 のオプションにチェックがされています: 4D Mobile サーバーで公開 のオプションのチェックを外します。 または チェックされていないフィールドを公開するためにはチェックをします。 公開・非公開を修正したいフィールドそれぞれに関して上記の操作をして下さい。フィールドが4D Mobileで公開すためには、テーブルも同様に公開されてなければならないことに注意して下さい。親のテーブルが公開されていないとき、その中のフィールドは公開状態に関係なく非公開になります。これを利用して、テーブルの4D Mobileでの公開設定を選択することにより、個々のフィールドの4D Mobileサービスで公開 の設定を変えることなく公開/非公開を切り替えることが出来ます。
デフォルトではどのプロジェクトメソッドも4D Mobile では公開はされていません。
しかし、場合によっては一部のプロジェクトメソッドを4D Mobile に公開したいことがあるかもしれません。そのためには適切なオプションを選択し、メソッドのWakanda 実行コンテキストを定義する必要があります。
Note : 4D メソッドにアクセスグループが関連付けられている場合、4D Mobile のグループがこのグループに含まれている必要があります。
プロジェクトメソッドの4D Mobile 公開は以下の様に設定します:
メソッドプロパティのダイアログボックスを表示します。注: メソッドプロパティのダイアログボックスは、エクスプローラー内のメソッドのページのコンテキストメニューか、メソッドエディターのメソッド情報 のボタンから行くことが出来ます。 4D Mobile 呼び出しからの利用を許可 のオプションにチェックを入れます:テーブル とスコープ を使ってWakanda 実行コンテキストを定義します。 これらの設定はWakandaのロジックでは必須です。この点についての詳細は、以下のセクションを参照して下さい。OK をクリックして変更を確定させます。 4D Mobile を介して使用可能なプロジェクトメソッドは、4Dエクスプローラーの「4D Mobile メソッド」内に一覧で表示されます(以下の "エクスプローラー" の章を参照して下さい)。
4D Mobile リクエストを介して使用可能なプロジェクトメソッドを宣言するとき、その呼び出しコンテキストをテーブル とスコープ を通じて明示的に宣言する必要があります:
テーブル: プロジェクトメソッドと関連付けられているテーブルです。 この設定はテーブルのデータの使用そのものとはリンクしておらず、JavaScriptコードからメソッドへアクセスする際のdatastore class オブジェクトを指定することができます。 メ ニューには4D Mobile に公開されているデータベースのテーブルの一覧が表示されます。メソッドがテーブルのデータを特に使用する場合、そのテーブルを選択することができます。メソッドが単一のテーブルに関連付けられていない場合、公開されているどのテーブルも使用することができます。または、ご自分の4Dアプリケーションのビジネスロジックに対応するメソッドのみを公開したい場合、それ専属のテーブルを作成・公開することができます。例えば、[4D MobileInterface] というテーブルを作成し、4D Mobileに公開されている全てのプロジェクトメソッドをそこに関連付ける、といった具合です。スコープ: メソッドが適 用される範囲を指定します。この宣言は必須です。なぜなら、Wakanda側ではメソッドはJavaScriptオブジェクトのプロパティとしてみなさ れ、これらのオブジェクトを使用しないと呼び出せないからです。公開されている4Dメソッドはそれぞれ明示的に呼び出されるデータベースコンテキストと関 連付けられている必要があります。テーブル 、カレントレコード 、そしてカレントセレクション から選択できます。テーブル: このオプションは、4Dメソッドが指定されたテーブルの全てのレコードを使用して実行されるという事を意味します。 Wakanda側では、メソッドは Datastore class という型のオブジェクトとして呼び出されます。例:ds.MyTable.MyMethod カレントレコード: このオプションは、4Dメソッドが指定されたテーブルのカレントレコードを使用して実行されるという事を意味します。 Wakanda 側では、メソッドは Entity という型のオブジェクト上で呼び出されます。例: ds.MyTable(1).MyMethod カレントセレクション: このオプションは4Dメソッドが指定されたテーブルのカレントセレクションを使用して実行されるという事を意味します。 Wakanda 側では、メソッドは Entity Collection という型のオブジェクト上で呼び出されます。例: ds.MyTable.all().MyMethod 警告: 4D側でプロジェクトメソッドの公開設定やスコープの設定を変更した場合、Wakanda側でリモートモデルをリロードしてこれらの変更を有効化する必要があります。
4D Mobile サービスが有効化されているとき、4D Mobile に公開されているテーブルとそれに関連付けられているプロジェクトメソッドはの一覧は、4Dエクスプローラー内の4D Mobile メソッドのセクションに表示されます: