Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » Mobile Link - サーバ管理 » Mobile Link イベント » 同期イベント

 

authenticate_parameters 接続イベント

ユーザ 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} 
)