4D v16.3

On 4D Mobile Authentication database method

ホーム

 
4D v16.3
On 4D Mobile Authentication database method

On 4D Mobile Authentication database method 


 

$1, $2, $3 -> On 4D Mobile Authentication database method -> 戻り値 
引数   説明
$1  テキスト in ユーザー名
$2  テキスト in パスワード
$3  ブール in True = ダイジェストモード False = ベーシックモード
戻り値  ブール in True = リクエスト承認 False = リクエスト拒否

説明   

On 4D Mobile Authentication database method は4D Mobile セッションを開くのを管理するための方法を提供します。このデータベースメソッドは主に Wakanda Server と4D v14との接続を設定するときにそれをフィルタリングするのが主な目的です。

Wakanda Server から mergeOutsideCatalog() メソッドを使用して4D Mobile セッションを開くリクエストが来ると(一般的なケース)、接続の識別子がリクエストのヘッダーに供給されます。続いて On 4D Mobile Authentication database method データベースメソッドが呼ばれこれらの識別子を評価します。4D データベースのユーザーのリストを使用することもできますし、独自の識別子のテーブルを使用することもできます。

重要: On 4D Mobile Authentication database method が定義される(つまり中にコードが記述される)と、4D は4D Mobile リクエストの管理をそちらに全て一任します。このとき、データベース設定のWeb/4D Mobile ページ内の「読み込み/書き出し」メニューで設定した内容は、無視されます(Design Reference マニュアルを参照して下さい)。

このデータベースメソッドは二つのテキスト型の引数($1$2)と一つのブール型の引数($3)を4Dから受け取り、ブール型の引数 $0 を返します。これらの引数は以下の様に宣言されている必要があります。

  //On 4D Mobile Authentication データベースメソッド
 C_TEXT($1;$2)
 C_BOOLEAN($0;$3)
 ... // メソッドのコード

$1 には接続に使用したユーザー名が入り、 $2 にはパスワードが入ります。

リクエストに使われるモードにより、パスワード ($2) は標準テキストまたはハッシュ値で受け取る事が可能です。このモードは $3 引数によって指定され、適切に処理することができます:

  • パスワードが標準テキスト(ベーシックモード)である場合、$3 にはFalse が渡されます。
  • パスワードがハッシュ値(ダイジェストモード)である場合、$3 には True が渡されます。

4D Mobile 接続リクエストがWakanda Serverから来るときは、パスワードは必ずハッシュ値で送られてきます。

リ クエストがブラウザや Wakanda 以外の Web クライアントから送られてくる場合、デベロッパが責任を持って "username-4D" フィールドと "password-4D" フィールドを HTTP ヘッダーに含めることによってオリジナルのHTML/JavaScript ページからの認証を管理して下さい。この場合、パスワードは4D REST サーバーに標準テキストで送られてなければなりません(サードパーティからの干渉のリスクを避けるためにSSLを使用して下さい)。

4D Mobile 接続の識別子は、データベースメソッド内でチェックしなければなりません。通常、ユーザー独自のテーブルを使用して名前とパスワードをチェックします。もし識別子が有効であるなら、 $0True を渡します。すると、リクエストが受理されます。4Dはこのリクエストを実行して結果をJSON形式で返します。
それ以外の場合は $0False を渡します。この場合、接続は拒否され、サーバーはリクエストの送信者へ認証をエラーを返します。

ユーザーがデータベースの4Dユーザーのリストの中に載っているとき、以下のコードによってパスワードを直接チェックすることができます:

 $0:=Validate password($1;$2;$3)

Validate password コマンドは拡張され、第一引数にユーザー名、第二引数にパスワードを渡し、任意の第三引数でパスワードがハッシュド形式で書かれているかどうかを指定できるようになりました。

4D データベースのものとは別の独自のユーザーリストを使用したい場合、そのユーザー達のパスワードを、Wakanda Server が On 4D Mobile Authentication database method データベースメソッドに接続リクエストを送る時のアルゴリズムと同じものを用いてハッシュ形式にて$2 引数に保存することができます。

この方法を使用してパスワードをハッシュする場合、以下の様に記述して下さい:

 $HashedPasswd :=Generate digest($ClearPasswd ;4D digest)

Generate digest コマンドにはハッシュアルゴリズムとして 4D digest を受け取れるようになりました。これは4Dのパスワードの内部管理で使用されているメソッドと対応しています。

この例題ではパスワード "123"を使用する、4Dユーザーと合致しない "admin"というユーザーのみを受け入れる場合を考えます:

  //On 4D Mobile Authentication database method
 C_TEXT($1;$2)
 C_BOOLEAN($0;$3)
  //$1: ユーザー
  //$2: パスワード
  //$3: ダイジェストモード
 If($1="admin")
    If($3)
       $0:=($2=Generate digest("123";4D digest))
    Else
       $0:=($2="123")
    End if
 Else
    $0:=False
 End if

以下の On 4D Mobile Authentication database method の使用例は、接続リクエストが4D データベースのユーザーに保存されている二つの認証済みの Wakanda サーバーのどちらかから来ていることをチェックします:

 C_TEXT($1;$2)
 C_BOOLEAN($0)
 ON ERR CALL("4DMOBILE_error")
 If($1="WAK1")|($1="WAK2")
    $0:=Validate password($1;$2;$3)
 Else
    $0:=False
End case

 
プロパティ 

プロダクト: 4D
テーマ: データベースメソッド
番号: 3367

 
履歴 

初出: 4D v14
名称変更: 4D v14 R3

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)