ユーザ ID とパスワード以外の認証に使用できる、リモートからの値を受信します。この値を使用して、各同期を任意にカスタマイズすることもできます。
次の表の説明では、SQL データ型を示します。Java または .NET でスクリプトを作成する場合、適切なデータ型を使用してください。SQL データ型と Java データ型とSQL データ型と .NET データ型を参照してください。
SQL スクリプトでは、名前または疑問符を使用してイベント・パラメータを指定できますが、スクリプト内に名前と疑問符を混在させることはできません。疑問符を使用する場合、パラメータは以下に示す順に指定する必要があり、後続のパラメータが指定されていない場合のみ省略可能です (たとえば、パラメータ 2 を使用する場合は、パラメータ 1 を使用してください)。名前付きパラメータを使用する場合は、パラメータの任意のサブセットを任意の順に指定できます。
SQL スクリプトのパラメータ名 | 説明 | 順序 |
---|---|---|
s.authentication_status | INTEGER。これは INOUT パラメータです。 | 1 |
s.remote_id | VARCHAR(128)。Mobile Link リモート ID。名前付きパラメータを使用している場合のみ、リモート ID を参照できます。 | 適用不可 |
s.username | VARCHAR(128)。Mobile Link ユーザ名。 | 2 |
a.N (1 つ以上) | VARCHAR(128)。たとえば、a.1 a.2 のような名前付きパラメータを指定できます。
|
3... |
authentication_status authentication_status パラメータは必須です。認証の全体の成功状況を示します。次のいずれかの値に設定されます。
戻り値 | authentication_status | 説明 |
---|---|---|
V <= 1999 | 1000 | 認証に成功しました。 |
1999 < V <= 2999 | 2000 | 認証に成功しましたが、パスワードの有効期限がもうすぐ切れます。 |
2999 < V <= 3999 | 3000 | 認証に失敗しました。パスワードの有効期限が切れています。 |
3999 < V <= 4999 | 4000 | 認証に失敗しました。 |
4999 < V <= 5999 | 5000 | 認証に失敗しました。ユーザがすでに同期中です。 |
5999 < V | 4000 | 戻り値が 5999 より大きい場合、その値は 4000 (認証に失敗) として解釈されます。 |
username このパラメータは、Mobile Link ユーザ名です。VARCHAR(128)。
remote_ID Mobile Link リモート ID。名前付きパラメータを使用している場合のみ、リモート ID を参照できます。
スクリプトでのリモート ID と Mobile Link ユーザ名の使用を参照してください。
remote_parameters リモート・パラメータの数が予期される数と一致しないと、エラーの原因となります。また、パラメータがクライアントから送信されたときにこのイベントのスクリプトがない場合にもエラーが発生します。
SQL Anywhere のクライアントからも Ultra Light のクライアントからも、文字列またはパラメータを文字列の形式で送信できます。これにより、ユーザ ID とパスワード以外の認証も可能になります。また、パラメータの値に基づいて同期をカスタマイズでき、それも前同期フェーズで認証中にカスタマイズできます。
Mobile Link 同期サーバは、各同期の開始時にこのイベントを実行します。このイベントは、authenticate_user イベントと同じトランザクションで実行されます。
このイベントを使用して、組み込み Mobile Link 認証メカニズムを、カスタム・メカニズムに置き換えられます。使用している DBMS の認証メカニズムを使用したり、Mobile Link 組み込みメカニズムには存在しない機能を実装したりできます。
authenticate_user スクリプトまたは authenticate_user_hashed スクリプトが呼び出されてエラーを返すと、このイベントは呼び出されません。
authenticate_parameters イベント用の SQL スクリプトは、ストアド・プロシージャとして実装してください。
Ultra Light リモート・データベースでは、ul_synch_info 構造体の num_auth_parms フィールドと auth_parms フィールドを使用して、パラメータを渡します。num_auth_parms は、パラメータの数で、0 ~ 255 の値になります。auth_parms は、文字列の配列へのポインタです。文字列がプレーン・テキストとして表示されるのを防ぐため、文字列はパスワードと同じ方法で送信されます。num_auth_parms が 0 の場合、auth_parms は NULL に設定します。次に、Ultra Light でパラメータを渡す例を示します。
ul_char * Params[ 3 ] = { UL_TEXT( "param1" ), UL_TEXT( "param2" ), UL_TEXT( "param3" ) }; ... info.num_auth_parms = 3; info.auth_parms = Params; |
SQL Anywhere のリモート・データベースでは、dbmlsync -ap オプションを使用して、パラメータをカンマで区切られたリストで渡します。たとえば、次のコマンド・ラインは 3 つのパラメータを渡します。
dbmlsync -ap "param1,param2,param3" |
この例では、authenticate_parameters スクリプトは以下のようになります。
CALL my_auth_parm ( {ml s.authentication_status}, {ml s.remote_id}, {ml s.username}, {ml a.1}, {ml a.2}, {ml a.3} ) |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |