Interstage Application Server Smart Repository運用ガイド |
目次 索引 |
第5章 アプリケーションの作成(C API) | > 5.2 C API仕様 |
関数名 |
関数の説明 |
---|---|
リポジトリサーバへのセションを初期化します。 |
|
リポジトリサーバへのセションを初期化します。(SSL使用) |
関数名 |
関数の説明 |
---|---|
セションハンドルオプションの設定値を参照します。 |
|
セションハンドルオプションを設定します。 |
|
ライブラリのバージョン情報を参照します。 |
関数名 |
関数の説明 |
---|---|
リポジトリサーバとのコネクションをクローズした後、セションを解放します。 |
|
ldap_unbind()と同じ処理をします。 |
この関数は、SSLを使用しない環境で、LDAPのセションをオープンします。
これ以降に呼び出す関数は、ここで取得したセションハンドルをパラメタに指定します。セションハンドルは、そのセションをクローズするまで有効です。
DNを使用した簡易認証を行う場合、認証はDNとパスワードを使用して行われます。なお、SSLを使用した通信を行う場合は、ldapssl_init()を使用してください。簡易認証については、“リポジトリサーバとのユーザ認証”を参照してください。
【指定形式】
#include "idldap.h" LDAP *ldap_init( char *hostname, int portno ); |
【パラメタの説明】
リポジトリサーバのホスト名、またはIPアドレスを示す文字列のアドレスを指定します。ホスト名やIPアドレスは、空白で区切って複数指定することができます。複数の相手ホストが指定された場合、コネクションを確立する際に指定された順番で接続を試みて、接続に成功した最初のホストと通信を行います。
リポジトリサーバのポート番号を指定します。デフォルトのLDAPポートを使用する場合は、ポート番号に0を指定します。デフォルトのポート番号はLDAP_PORT“389”です。
【復帰値】
この関数は、復帰値として以下の値を返します。
正常完了の場合、セションハンドルには獲得したセションハンドルへのポインタが通知されます。
異常完了の場合、以下の原因が考えられます。
オープンした1つのセションを複数のスレッドで共有し、各スレッドからLDAP要求を行うことはできません。スレッドを使用しLDAP要求を行う場合、各スレッドでldap_init()で獲得したセションを使用し、それぞれのスレッドからLDAP要求をしてください。
2つ以上のリポジトリに対して指定したホストの中で起動しているリポジトリに接続するような用途には使用できません。
(1つ目のホストに接続してリポジトリが起動していなければ、2つ目のホストのリポジトリに接続を試みる。)
複数のホストを指定した場合は、1つ目のホストに対してCONNECTを行いソケットレベルで接続できない場合にのみ、2つ目以降のホストに対して接続を試みます。上記のようなリポジトリ起動チェックを行う場合は、リポジトリの起動をldap_simple_bind()/ldap_simple_bind_s()で確認するように、APIを使用してアプリケーション側での対応が必要です。
この関数は、SSLを使用する場合に、通常のldap_init()の代わりに使用します。
この関数でセションをオープンした場合は、サーバとの通信を安全なものとすることができます。なお、この関数はスレッドアンセーフです。
これ以降に呼び出す関数は、ここで取得したセションハンドルをパラメタに指定します。セションハンドルは、そのセションをクローズするまで有効です。
SSLを使用した簡易認証を行う場合、認証はDN名とパスワードを使用して行われます。この場合、DN名による簡易認証とSSLによる安全な通信が可能になります。簡易認証については、“リポジトリサーバとのユーザ認証”を参照してください。
【指定形式】
#include "idldap.h" LDAP *ldapssl_init( char *hostname, int portno, SSLENV *sslenv ); |
【パラメタの説明】
リポジトリサーバのホスト名、またはIPアドレスを示す文字列のアドレスを指定します。ホスト名やIPアドレスは、空白で区切って複数指定することができます。
複数の相手ホストが指定された場合、コネクションを確立する際に指定された順番で接続を試みて、接続に成功した最初のホストと通信を行います。
リポジトリサーバのポート番号を指定します。
デフォルトのLDAPポートを使用する場合は、ポート番号に0を指定します。デフォルトのポート番号はLDAP_SSL_PORT“636”です。
SSLENV構造体のアドレスを指定します。
SSLを使用する場合は、ここで指定する構造体にSSLの動作環境の情報を設定し、パラメタとして渡す必要があります。この構造体の各メンバには、以下の値を設定します。
【SSLENV構造体のメンバの説明】
使用するSSLプロトコルの種類を指定します。
これ以外の値を指定した場合は、SSLを使用しないものとして処理されます(ldap_init()と同じ処理となります)。
証明書の検証を行うかどうかの指定を行います。
これ以外の値を指定した場合は、以下の値が指定されたものとみなされます。
暗号化の方法を、暗号化アルゴリズムを示す文字列のアドレスで指定します。複数指定する場合には、“:”(コロン)で区切り、列記します。
指定可能な暗号化アルゴリズムの文字列を以下に示します。セキュリティレベルの値は、暗号強度の順位を表しています。
プロトコル |
暗号化方式の文字列 |
セキュリティ |
---|---|---|
SSL V2 |
"DES-CBC3-MD5" |
1 |
"DES-CBC-MD5" |
2 |
|
"RC4-MD5" |
3 |
|
"RC2-MD5" |
3 |
|
"EXP-RC4-MD5" |
5 |
|
"EXP-RC2-MD5" |
5 |
|
SSL V3 |
"RSA-3DES-SHA" |
1 |
"RSA-DES-SHA" |
2 |
|
"RSA-RC4-MD5" |
3 |
|
"RSA-RC4-SHA" |
3 |
|
"RSA-EXPORT-RC4-MD5" |
5 |
|
"RSA-EXPORT-RC2-MD5" |
5 |
|
"RSA-NULL-MD5" |
7 |
|
"RSA-NULL-SHA" |
7 |
省略(NULLを指定)した場合は、暗号化ライブラリ(SCTL/SCLライブラリ)がサポートしている暗号仕様で、組合せ可能な暗号化アルゴリズムが指定されたものとみなします。
スロット情報ディレクトリのアドレスを指定します(ディレクトリのパス名をフルパスで指定します)。証明書/鍵管理環境の作成時に指定したスロット情報ディレクトリを指定してください。証明書/鍵管理環境の作成については、“証明書/鍵管理環境の作成(クライアント)”を参照してください。
トークンラベルのアドレスを指定します。証明書/鍵管理環境の作成時に指定したトークンラベルを指定してください。証明書/鍵管理環境の作成については、“証明書/鍵管理環境の作成(クライアント)”を参照してください。
ユーザPINのアドレスを指定します。証明書/鍵管理環境の作成時に指定したユーザPINを指定してください。証明書/鍵管理環境の作成については、“証明書/鍵管理環境の作成(クライアント)”を参照してください。
運用管理ディレクトリのアドレスを指定します(ディレクトリのパス名をフルパスで指定します)。証明書/鍵管理環境の作成時に指定した運用管理ディレクトリを指定してください。証明書/鍵管理環境の作成については、“証明書/鍵管理環境の作成(クライアント)”を参照してください。
ユーザ証明書ニックネームのアドレスを指定します。省略(NULLを指定)した場合は、証明書管理に登録されている自分の証明書がすべて指定されたものとみなします。ユーザ証明書の登録時に指定したユーザ証明書ニックネームを指定してください。ユーザ証明書(サイト証明書)の登録については、“証明書とCRLの登録(クライアント)”を参照してください。
SSLエラーコードが設定されます。必ず0で初期化する必要があります。
SSLエラー詳細コードが設定されます。必ず0で初期化する必要があります。
SSLにおけるタイマー(秒単位)を設定します。0を指定した場合は、タイマーが3600秒となります。リポジトリサーバの応答に対する最大の待ち時間に使用されます。
SSLライブラリの保守コードが設定されます。
【復帰値】
この関数は、復帰値として以下の値を返します。
正常完了の場合、セションハンドルには獲得したセションハンドルへのポインタが通知されます。
異常完了の場合、以下の原因が考えられます。
sslenvパラメタで指定するSSLENV構造体には、ldap_unbind/ldap_unbind_sで発生したSSLライブラリのエラーコードも設定されます。このため、セションハンドルの解放が完了するまでは、sslenvパラメタで指定した領域を解放しないでください。
ldapssl_init()で発生したSSLライブラリのエラーコードは、ldapssl_error()で参照することができません。そのため、SSLENV構造体のメンバ(ssl_errとssl_err_detail)の値でチェックする必要があります。
SSLライブラリでエラーが発生していない場合は、0が設定されたままとなっています。SSLエラーコードの値については、“SSLエラーコード”を参照してください。
オープンした1つのセションを複数のスレッドで共有し、各スレッドからLDAP要求を行うことはできません。スレッドを使用しLDAP要求を行う場合、各スレッドでldapssl_init()で獲得したセションを使用し、それぞれのスレッドからLDAP要求をしてください。
ldapssl_init()はスレッドアンセーフ関数です。この関数を複数のスレッドから同時に呼び出す際は、アプリケーション側で各スレッド間の排他処理を行ってください。排他を行わない場合、動作の保証はできません。
クライアントAPIライブラリでは、セションごとの動作環境を、セションハンドルオプションとして設定/参照することができます。
使用可能なセションハンドルオプションを、以下に示します。
オプションのタイプ |
optdataの形式 |
optdataが示す領域の値(値の意味) |
set |
get |
---|---|---|---|---|
LDAP_OPT_DESC |
int * |
使用中のソケット識別子 |
× |
○ |
LDAP_OPT_DEREF |
int * |
LDAP_DEREF_NEVER(初期値) |
○ |
○ |
LDAP_DEREF_FINDING |
||||
LDAP_DEREF_SEARCHING |
||||
LDAP_DEREF_ALWAYS |
||||
LDAP_OPT_SIZELIMIT |
int * |
LDAP_NO_LIMIT(初期値) |
○ |
○ |
受信可能なエントリ数 |
||||
LDAP_OPT_TIMELIMIT |
int * |
LDAP_NO_LIMIT(初期値) |
○ |
○ |
最大検索時間(秒単位) |
||||
LDAP_OPT_RESTART |
void * |
LDAP_OPT_ON |
○ |
○ |
LDAP_OPT_OFF(初期値) |
||||
LDAP_OPT_PROTOCOL_VERSION |
int * |
LDAP_VERSION2(初期値) |
○ |
○ |
LDAP_VERSION3 |
||||
LDAP_OPT_SERVER_CONTROLS |
LDAPControl *** |
デフォルトのサーバコントロールの、ポインタ配列のアドレス |
○ |
○ |
LDAP_OPT_HOST_NAME |
char ** |
リポジトリサーバのホスト名 |
○ |
○ |
LDAP_OPT_ERROR_NUMBER |
int * |
最新のLDAPエラー番号 |
× |
○ |
LDAP_OPT_ERROR_STRING |
char ** |
最新のLDAPエラーメッセージのアドレス |
× |
○ |
LDAP_OPT_CONNTIME |
int * |
LDAP_NO_LIMIT |
○ |
○ |
タイムアウトまでの待ち時間 |
||||
LDAP_OPT_WSINIT (Windows Sockets DLLの初期化、および終了処理の実施)(注2) |
int * |
LDAP_NO_WSINIT |
○ |
○ |
set : ldap_set_option()
get : ldap_get_option()
○ : 使用可
× : 使用不可
注1)リポジトリにアクセスするDN(バインドDN)と、サーバ側の検索可能最大エントリ数、検索タイムアウト時間の設定値により、LDAP_OPT_SIZELIMITとLDAP_OPT_TIMELIMITの値が有効にならない場合があります。詳細は、“検索可能最大エントリ数、検索タイムアウト時間指定時の動作について”を参照してください。
注2)
LDAP C APIは、Windows Sockets DLL を利用してTCP/IPプロトコルで通信を行います。Windows Sockets DLLの初期化(WSAStartup())、および終了処理(WSACleanup())はLDAP C API内で行うため、ユーザアプリケーション側では初期化処理は必要ありません。
しかし、ユーザアプリケーション側でWindows Sockets DLLの初期化/終了処理を行う場合は、LDAP C API側で初期化/終了処理を実行しないように、セションハンドルオプションLDAP_OPT_WSINITを設定する必要があります。
この関数は、セションハンドルオプションの値を設定します。使用可能なオプションの種類/設定値については、“セションハンドルオプション”を参照してください。
【指定形式】
#include "idldap.h" int ldap_set_option( LDAP *ld, int option, void *optdata ); |
【パラメタの説明】
ldap_init()、またはldapssl_init()で通知された、セションハンドルを指定します。
設定するオプションの種類を指定します。
オプションの設定値を格納した領域のアドレスを指定します。
【復帰値】
この関数では、復帰値として以下を返します。
異常完了の場合、以下の原因が考えられます。
この関数は、セションハンドルオプションの設定値を読み込みます。使用可能なオプションの種類/設定値については、“セションハンドルオプション”を参照してください。
【指定形式】
#include "idldap.h" int ldap_get_option( LDAP *ld, int option, void *optdata ); |
【パラメタの説明】
ldap_init()、またはldapssl_init()で通知された、セションハンドルを指定します。
参照するオプションの種類を指定します。
読み込んだオプションの値を格納する領域のアドレスを指定します。
【復帰値】
この関数では、復帰値として以下を返します。
正常完了の場合、optdataパラメタで指定された領域に、読み込んだパラメタの設定値が格納されます。
異常完了の場合、以下の原因が考えられます。
この関数は、ライブラリのバージョン情報を読み込みます。
【指定形式】
#include "idldap.h" int ldap_version( LDAPVersion *ver ); |
【パラメタの説明】
LDAPVersion構造体のアドレスを指定します。
【復帰値】
この関数は、復帰値としてライブラリのバージョンを返します。
また、verオプションで指定された領域の各メンバには、以下の情報が設定されます。
ライブラリのバージョンを示す値が設定されます。ここに設定される値は、関数の復帰値として返すものと同じものです。通知されるバージョンの値は、100倍した値です。(例 : V1.0の場合 → 100)
このライブラリで使用可能な最も新しいLDAPプロトコルのバージョンが設定されます。通知されるバージョンの値は、100倍した値です。(例 : V3の場合 → 300)
このライブラリで使用可能な最も新しいSSLプロトコルのバージョンが設定されます。
ライブラリの提供元ベンダ名のアドレスが設定されます。
この関数は、リポジトリサーバとのコネクション解放とセションのクローズをします。ldap_unbind()とldap_unbind_s()は、どちらも同期型として処理を行い、機能的な違いはありません。
【指定形式】
#include "idldap.h" int ldap_unbind( LDAP *ld ); int ldap_unbind_s( LDAP *ld ); |
【パラメタの説明】
ldap_init()、またはldapssl_init()で通知された、セションハンドルを指定します。
【復帰値】
この関数では、復帰値としてLDAPエラーコードを返します。LDAPエラーコードの値については、“LDAPエラーコード”を参照してください。
ldap_unbind()は、指定されたセションハンドルを解放してから呼出し元に復帰します。
このため、ldap_unbind()、またはldap_unbind_s()が完了した後では、セションハンドル(ldパラメタ)を使用できなくなります。
ldap_unbind/ldap_unbind_s()で発生したSSLライブラリのエラーコードは、ldapssl_error()で参照することができません。そのため、SSLENV構造体のメンバ(ssl_errとssl_err_detail)の値でチェックする必要があります。
SSLライブラリでエラーが発生していない場合は、0が設定されたままとなっています。SSLエラーコードの値については、“SSLエラーコード”を参照してください。
目次 索引 |