On SQL Authentication データベースメソッド

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 11.3 (Modified)


On SQL Authentication データベースメソッド は4Dの統合されたSQLサーバへ送られたリクエストを選別します。この選別は、名前とパスワード、そしてユーザのIPアドレス (オプション) に基づいて実行されます。開発者は独自のユーザテーブルや、4Dのユーザテーブルを使用して、接続を識別できます。接続を認証したら、CHANGE CURRENT USER コマンドを呼び出して、4Dのデータベース内のリクエストへのアクセスをコントロールします。

On SQL Authentication データベースメソッドが存在する場合、4Dまたは4D ServerのSQLサーバに外部からSQL接続が行われると、自動的にこのメソッドが呼び出されます。4Dユーザを管理する内部システムは起動しません。データベースメソッドが$0にTrueを返しかつ、CHANGE CURRENT USERコマンドの実行が成功した場合のみ、接続が受け入れられます。これらの条件を満たさない場合リクエストは拒否されます。

Note: SQL LOGIN(SQL_INTERNAL;$user;$password)ステートメントは内部接続となるため、On SQL Authentication データベースメソッドを呼び出しません。

データベースメソッドは最大3つのテキストタイプの引数を4Dより受け取り、$0にブール値を返します。以下はこれらの引数の説明です。

引数説明
$1テキストユーザ名
$2テキストパスワード
$3テキスト(オプション) リクエストもとのクライアントのIPアドレス
$0ブールTrue = リクエストを許可, False = リクエストを拒否

以下のようにこれらの引数を宣言しなければなりません:

      ` On Web Authentication データベースメソッド

   C_TEXT($1;$2;$3)
   C_BOOLEAN($0)
      ` メソッドコード

標準テキストとして、パスワード($2)を受け取ります。

On SQL Authentication データベースメソッドでSQL接続の識別子を確認します。例えば、ユーザのカスタムテーブルを使用して名前とパスワードをチェックします。識別子が有効な場合、$0 でTrueを通し接続を受け入れます。

その他の場合は、$0でFalseを返します。すると接続が拒否されます。

デフォルトでは$0はFalseです。従ってOn SQL Authentication データベースメソッドが存在し、$0が定義されない場合、すべての接続は拒否されます。

Note: On SQL Authentication データベースメソッドが存在しない場合、4Dの統合されたユーザ管理システムを使用して、接続を決定します (有効になっている場合、つまりDesignerにパスワードが割り当てられている場合)。このシステムが起動していない場合、ユーザはDesignerアクセス権 (フリーアクセス) で接続されます。

$0にTrueを渡す場合、リクエストを受け入れ、ユーザのためにSQLのセッションを開くためには、On SQL Authentication データベースメソッドCHANGE CURRENT USER コマンドを呼び出し、その実行が成功しなければなりません。

CHANGE CURRENT USER コマンドは、仮想の認証システムを実行するために使用されます。この認証システムには、2つの利点があります。1つは接続動作をコントロールできること。もう1つは4DのSQLセッションで接続の識別子を外部から見えないようにします。

以下の例でOn SQL Authentication データベースメソッドは、接続リクエストが内部ネットワークからのものであることを確認し、識別子を検証、SQLセッションへのアクセス権に"sql_user" ユーザを割り当てます。

   C_TEXT($1;$2;$3) 
   C_BOOLEAN ($0) 
      `$1: user 
      `$2: password
      `{$3: IP address of client} 
   ON ERR CALL ("SQL_error")    
   If (checkInternalIP($3))
      `checkInternalIPメソッドはIPアドレスが内部のものか確認します。
      If ($1="victor") & ($2="hugo") 
         CHANGE CURRENT USER("sql_user";"") 
         If (OK=1) 
            $0:=True 
         Else 
            $0:=False 
         End if
      Else 
         $0:=False 
      End if
   Else 
      $0:=False 
   End if

参照

CHANGE CURRENT USER.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次