Mobile Link には、authenticate_user イベントを使用して外部サーバに対する認証を簡単に行えるようにする、事前に定義された Java 同期スクリプトが用意されています。事前に定義されたスクリプトは、次の認証サーバで使用できます。
JavaMail 1.2 API を使用している POP3 または IMAP サーバ
Java Naming と Directory Interface (JNDI) を使用している LDAP サーバ
これらのスクリプトをどのように使用するかは、Mobile Link ユーザ名を外部認証システムのユーザ ID に直接マッピングしているかどうかによって決まります。
Sybase Central モデル・モードで [認証] タブを使用して外部サーバへの認証を設定することもできます。Mobile Link のモデルを参照してください。
Mobile Link ユーザ名を認証システムの有効なユーザ ID に直接マッピングしている単純なケースでは、authenticate_user 接続イベントに対する応答で、定義済みのスクリプトを直接使用できます。認証コードは、ml_property テーブルに格納されているプロパティに基づいてそのコード自体を初期化します。
事前に定義された Java 同期スクリプトを Mobile Link の ml_scripts システム・テーブルに追加します。追加するには、ストアド・プロシージャを使用するか、Sybase Central を使用します。
ml_add_java_connection_script ストアド・プロシージャを使用するには、次のコマンドを実行します。
call ml_add_java_connection_script( 'MyVersion', 'authenticate_user', 'ianywhere.ml.authentication.ServerType.authenticate' ) |
ここで、MyVersion はスクリプト・バージョンの名前で、ServerType は LDAP、POP3、または IMAP です。
Sybase Central の接続スクリプト追加ウィザードを使用するには、スクリプト・タイプとして authenticate_user を選択し、コード・エディタで次のコードを入力します。
ianywhere.ml.authentication.ServerType.authenticate |
ここで、ServerType は LDAP、POP3、または IMAP です。
この認証サーバのプロパティを追加します。
設定が必要な各プロパティに対し、ml_add_property ストアド・プロシージャを使用します。
call ml_add_property( 'ScriptVersion', 'MyVersion', 'property_name', 'property_value' ) |
ここで、MyVersion はスクリプト・バージョンの名前で、property_name は認証サーバによって決まります。また、property_value は使用しているアプリケーションに適切な値です。この呼び出しを、設定の必要な各プロパティに対して繰り返し行います。
外部認証識別符号プロパティとml_add_property システム・プロシージャを参照してください。
Mobile Link ユーザ名がユーザ ID と同じでない場合は、コードを間接的に呼び出す必要があり、ユーザ ID を ml_user 値から抽出するか、マッピングしなければなりません。これを行うには、Java クラスを作成します。
Java による同期スクリプトの作成を参照してください。
次に、簡単な例を示します。extractUserID メソッド内のコードは、ml_user 値をユーザ ID にマッピングする方法によって異なるため、この例では省きます。すべての作業は、認証クラスの "authenticate" メソッドで行われます。
package com.mycompany.mycode; import ianywhere.ml.authentication.*; import ianywhere.ml.script.*; public class MLEvents { private DBConnectionContext _context; private POP3 _pop3; public MLEvents( DBConnectionContext context ) { _context = context; _pop3 = new POP3( context ); } public void authenticateUser( InOutInteger status, String userID, String password, String newPassword ) { String realUserID = extractUserID( userID ); _pop3.authenticate( status, realUserID, password, newPassword ); } private String extractUserID( String userID ) { // code here to map ml_user to a "real" POP3 user } } |
この例では、初期化プロパティを検出できるようにするために、POP3 オブジェクトを DBConnectContext オブジェクトで初期化する必要があります。この方法でオブジェクトを初期化しない場合は、コードにプロパティを設定する必要があります。次に例を示します。
POP3 pop3 = new POP3(); pop3.setServerName( "smtp.sybase.com" ); pop3.setServerPort( 25 ); |
これはどのような認証クラスにも適用されますが、プロパティはクラスによって異なります。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |