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

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

version 2004 (Modified)


On Web Authentication データベースメソッドはWebサーバエンジンへのアクセス管理を担当します。このデータベースメソッドは、Webブラウザからのリクエストがサーバ上の4Dメソッド (4DACTION4DCGI URL、4DSCRIPT などを使用して呼び出されるメソッド) の実行を必要とするとき、4Dまたは4D Serverから呼ばれます。

このメソッドは6つのテキスト引数$1, $2, $3, $4, $5, $6を受け取り、ブール値を$0に返します。これらの引数の意味は以下のとおりです:

引数説明
$1テキストURL
$2テキストHTTPヘッダ + HTTPボディ (32 KBまで)
$3テキストWebクライアント (ブラウザ) のIPアドレス
$4テキストサーバのIPアドレス
$5テキストユーザ名
$6テキストパスワード

$0 ブール True = リクエストを受け入れる, False = リクエストを拒否する

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

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

   C_TEXT($1;$2;$3;$4;$5;$6)
   C_BOOLEAN($0)

      ` メソッドコード

Note: すべてのOn Web Authentication データベースメソッドの引数が必ずしも埋められるわけではありません。データベースメソッドが受け取る情報は環境設定ダイアログボックスでの設定により異なります (接続セキュリティの節参照)。

・URL

最初の引数 ($1) はユーザがWebブラウザのアドレスエリアに入力したURL (からホストのアドレスを取り除いたもの) です。

イントラネット接続の場合をみてみましょう。4D WebサーバのIPアドレスを123.4.567.89とします。以下の表はWebブラウザに入力されたURLにより、$1が受け取る値を示しています:

Webブラウザのアドレスに入力された値$1の値
123.4.567.89/
http://123.4.567.89/
123.4.567.89/Customers/Customers
http://123.4.567.89/Customers/Customers
http://123.4.567.89/Customers/Add/Customers/Add
123.4.567.89/Do_This/If_OK/Do_That/Do_This/If_OK/Do_That

・HTTPリクエストのヘッダとボディ

2番目の引数 ($2) はWebブラウザから送信されたHTTPリクエストのヘッダとボディです。この情報はOn Web Authenticationデータベースメソッドにそのまま渡されることに留意してください。その内容は接続を試みたWebブラウザの仕様により異なります。

アプリケーションでこの情報を使用するには、開発者がヘッダとボディを解析しなければなりません。

Note: この引数に関する詳細はOn Web Connection データベースメソッドの説明を参照してください。

WebクライアントのIPアドレス

$3 引数はブラウザマシンのIPアドレスを受け取ります。この情報を使用して、イントラネットアクセスとインターネットアクセスを区別できます。

サーバIPアドレス

$4 引数はWebサーバを呼び出すために使用されたIPアドレスを受け取ります。4Dバージョン6.5以降マルチホーミングがサポートされ、複数のIPアドレスを持つマシンで使用できるようになりました。詳細はWeb サーバ設定の節を参照してください。

ユーザ名とパスワード

$5 と $6 引数は、ブラウザが表示する標準の認証ダイアログにユーザが入力したユーザ名とパスワードを受け取ります。このダイアログは環境設定でパスワード管理オプションが指定されていると、接続のたびに表示されます (接続セキュリティの節参照)。

Note: ブラウザから送信されたユーザ名が4Dに存在する場合、$6 引数 (ユーザパスワード) はセキュリティのため渡されません。

・$0 引数

On Web Authentication データベースメソッドはブール値を$0に返します:

・$0=True: 接続を受け入れる

・$0=False: 接続を受け入れない

On Web Connection データベースメソッドは、接続がOn Web Authenticationにより受け入れられた時にのみ実行されます。

警告: $0に値が設定されないか、$0On Web Authentication データベースメソッド内で定義されていない場合、接続は受け入れるものとされ、On Web Connection データベースメソッドが実行されます。

Notes

On Web Authentication データベースメソッド内では、いかなるインタフェース要素も呼び出さないでください (ALERT, DIALOG, 等)。そうでなければこのメソッドは中断され、接続は拒否されます。データベースメソッド実行中にエラーが発生した場合も同様です。

・“4DACTION、4DMETHODおよび4DSCRIPTで利用可能” オプションを使用して、4DACTION4DMETHOD によるメソッド実行をプロジェクトメソッドごとに禁止することができます。詳細は 接続セキュリティの節を参照してください。

On Web Authentication データベースメソッドの呼び出し

On Web Authentication データベースメソッドは、モードに関係なく、リクエストや処理が4Dメソッドの実行を必要とするとき自動で呼び出されます。またWebサーバが無効なスタティックURLを受け取ったときにも呼び出されます (例えばリクエストされたスタティックページが存在しない場合)。

まとめるとOn Web Authentication データベースメソッドは以下のケースで呼び出されます:

・4Dが 4DACTION/ で始まるURLを受信したとき。

・4Dが 4DMETHOD/ で始まるURLを受信したとき。

・4Dが 4DCGI/ で始まるURLを受信したとき。

・4Dが、存在しないスタティックページをリクエストするURLを受信したとき。

・4Dがセミダイナミックページで 4DSCRIPT タグを処理するとき。

・4D がセミダイナミックページでメソッドに基づく 4DLOOP タグを処理するとき。

有効なスタティックページをリクエストするURLを受信したとき、On Web Authentication データベースメソッドは呼び出されないことに注意してください。

例題

1. BASICモードのOn Web Authentication データベースメソッドの例題:

      `On Web Authentication データベースメソッド
   C_TEXT($5;$6;$3;$4)
   C_TEXT($user;$password;$BrowserIP;$ServerIP)
   C_BOOLEAN($4Duser)
   ARRAY TEXT($users;0)
   ARRAY LONGINT($nums;0)
   C_LONGINT($upos)
   C_BOOLEAN($0)

   $0:=False 

   $user:=$5
   $password:=$6
   $BrowserIP:=$3
   $ServerIP:=$4

      `セキュリィのため@を含むユーザ名とパスワードは拒否
   If (WithWildcard($user) | WithWildcard($password))
      $0:=False
         `WithWildcard メソッドは後述
   Else
         `4Dユーザがチェック
      GET USER LIST($users;$nums) 
      $upos:=Find in array($users;$user)
      If ($upos > 0)
         $4Duser:=Not(Is user deleted($nums{$upos}))
      Else
         $4Duser:=False
      End if
   
      If (Not($4Duser))
            `4Dに定義されたユーザでない場合、Webusersーブルを検索
         QUERY([WebUsers];[WebUsers]User=$user;*)
         QUERY([WebUsers]; & [WebUsers]Password=$password)
         $0:=(Records in selection([WebUsers]) = 1)
      Else
         $0:=True
      End if
   End if
      `イントラネット接続か?
   If (Substring($BrowserIP;1;7) # "192.100.")
      $0:=False
   End if

2. DIGESTモードのOn Web Authentication データベースメソッドの例題:

      `On Web Authentication データベースメソッド
   C_TEXT($1;$2;$5;$6;$3;$4)
   C_TEXT($user)
   C_BOOLEAN($0)
   $0:=False
   $user:=$5
      `セキュリィのため@を含むユーザ名とパスワードは拒否
   If(WithWildcard($user))
   $0:=False
      `WithWildcard メソッドは後述
   Else
      QUERY([WebUsers];[WebUsers]User=$user)
      If(OK=1)
         $0:=Validate Digest Web Password($user;[WebUsers]password)
      Else
         $0:=False`User does not exist
      End if
   End if

WithWildcard メソッド:
      `WithWildcard Method
      `WithWildcard ( 文字列 ) -> ブール
      `WithWildcard ( Name ) -> @を含む

   C_INTEGER($i)
   C_BOOLEAN($0)
   C_TEXT($1)

   $0:=False
   For($i;1;Length($1))
      If (Character code(Substring($1;$i;1)) = Character code("@"))
         $0:=True
      End if
   End for

参照

On Web Connection データベースメソッド, URLとフォームアクション, データベースメソッド, 接続セキュリティ.


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