4D v16.3On Web Authenticationデータベースメソッド |
||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
On Web Authenticationデータベースメソッド
|
引数 | 型 | 説明 |
$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)
` メソッドコード
注: On Web Authenticationデータベースメソッドのすべての引数が必ず値を受け取るわけではありません。データベースメソッドが受け取る情報はデータベース設定ダイアログボックスでの設定により異なります (接続セキュリティ参照)。
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 |
注: ブラウザーから送信されたユーザー名が4Dに存在する場合、$6 引数 (ユーザーパスワード) はセキュリティのため渡されません。
On Web Connectionデータベースメソッドは、接続がOn Web Authenticationデータベースメソッドにより受け入れられた時にのみ実行されます。
警告: $0に値が設定されないか、$0がOn Web Authenticationデータベースメソッド内で定義されていない場合、接続は受け入れるものとされ、On Web Connectionデータベースメソッドが実行されます。
注:
On Web Authenticationデータベースメソッドは、リクエストや処理が4Dメソッドの実行を必要とするとき自動で呼び出されます。またWebサーバーが無効なスタティックURLを受け取ったときにも呼び出されます (例えばリクエストされたスタティックページが存在しない場合)。
まとめるとOn Web Authenticationデータベースメソッドは以下のケースで呼び出されます:
互換性に関する注意: このデータベースメソッドは4Dが/4DMETHOD/ で始まるURLを受信したときにも実行されます。このURLは廃止予定であり、互換性の目的で保持されています。
有効なスタティックページをリクエストするURLを受信したとき、On Web Authenticationデータベースメソッドは呼び出されないことに注意してください。
BASIC認証モードのOn Web Authenticationデータベースメソッドの例題:
`On Web Authentication データベースメソッド
C_TEXT($1;$2;$3;$4;$5;$6)
C_BOOLEAN($0)
C_TEXT($user;$password;$BrowserIP;$ServerIP)
C_BOOLEAN($4Duser)
ARRAY TEXT($users;0)
ARRAY LONGINT($nums;0)
C_LONGINT($upos)
$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
DIGEST認証モードのOn Web Authenticationデータベースメソッドの例題:
// On Web Authentication Database Method
C_TEXT($1;$2;$5;$6;$3;$4)
C_BOOLEAN($0)
C_TEXT($user)
$0:=False
$user:=$5
// セキュリティのため@文字を含むユーザー名を拒否
If(WithWildcard($user))
$0:=False
// <span class="rte4d_met">WithWildcard</span> メソッドは後述
Else
QUERY([WebUsers];[WebUsers]User=$user)
If(OK=1)
$0:=WEB Validate digest($user;[WebUsers]password)
Else
$0:=False // ユーザーが存在しない
End if
End if
WithWildcard メソッドは以下の通りです:
// WithWildcard メソッド
// WithWildcard ( String ) -> ブール
// WithWildcard ( Name ) -> ワイルドカード文字を含んでいるか
C_LONGINT($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
テーマ: Webサーバ
ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)