ページの先頭行へ戻る
Interstage Application Server V12.1.0 移行ガイド
FUJITSU Software

2.3.3 ユーザアプリケーションの移行手順

2.3.3.1 C言語アプリケーションの移行手順

C言語アプリケーションの移行手順について説明します。

  

アプリケーションの再コンパイルについて

InfoDirectory SDKを使用したユーザアプリケーションは、Interstage ディレクトリサービス SDKとバイナリの互換性がありません。このため、アプリケーションを再コンパイルする必要があります。以降の記事を参照したうえで、アプリケーションを再コンパイルしてください。
また、一部の機能、インタフェースなどに変更がありますので、以下を参照して、アプリケーションを修正してください。

■機能差異

Interstage ディレクトリサービス LDAPクライアントAPIライブラリでは、最新の規約に正しく準拠するため、以下のAPIで機能差異が発生します。

  

■推奨されないインタフェース

以下に示すインタフェースは、推奨されないインタフェースとなります。引き続き使用できますが、新インタフェースへの移行を推奨します。

  

推奨されないインタフェース

新インタフェース

ldap_ber_free()

ber_free()に変更となります。パラメタの変更はありません。

ldap_version()

ldap_get_option()のオプションにLDAP_OPT_API_INFOを指定して獲得します。 (注)

ldap_get_option()
ldap_set_option()

  • LDAP_OPT_CONNTIMEオプションを使用している場合は、LDAP_OPT_NETWORK_TIMEOUTを使用してください。修正時は、オプションの値を格納する領域optdataに指定するパラメタの形式を以下のように変更してください。

    • ldap_get_option()の場合、
      "int *"から"struct timeval **"に変更

    • ldap_set_option()の場合、
      "int *"から"struct timeval *"に変更

  • LDAP_OPT_ERROR_NUMBERは、LDAP_OPT_RESULT_CODEとして再定義されました。今後は、LDAP_OPT_RESULT_CODEを使用してください。

注意

通知される情報は、以下の形式です

  typedef struct ldapapiinfo {
      int  ldapai_info_version;
      int  ldapai_api_version;
      int  ldapai_protocol_version;
      char **ldapai_extensions;
      char *ldapai_vendor_name;
      int  ldapai_vendor_version;
  } LDAPAPIInfo;

  

構造体メンバの設定値

  ldapai_info_version       本構造体のバージョン情報
  ldapai_api_version        LDAP-SDKのバージョン情報
  ldapai_protocol_version   LDAPプロトコルのサポートバージョン
  ldapai_extensions         未使用(NULL)
  ldapai_vendor_name        ベンダー名
  ldapai_vendor_version     ベンダーの内部バージョン

■サポートされないインタフェース

InfoDirectoryで使用していたC言語アプリケーションを移行する場合は、一部サポートされない機能がありますので、必要に応じて、アプリケーションを修正してください。
Interstage ディレクトリサービスでサポートされない機能と、その対処方法を以下に示します。

  

サポートされない機能

対処方法

証明書ベースの認証機能

  • ldap_sasl_bind()

  • ldap_sasl_bind_s()

ldap_simple_bind()、またはldap_simple_bind_s()による認証に修正してください。

リフェラル機能

  • ldap_first_reference()

  • ldap_next_reference()

  • ldap_count_references()

  • ldap_parse_reference()

  • セションハンドルオプションの以下のオプション

    • LDAP_OPT_REFERRALS

    • LDAP_OPT_REFERRAL_HOP_LIMIT

    • LDAP_OPT_REFERRAL_REBIND

    • LDAP_OPT_REFERRAL_REBIND_MAX

リフェラルを含むメッセージは返却されないため、左記の関数を使用している場合は、関数を削除してください。
また、セションハンドルオプションの「LDAP_OPT_REFERRALS」に「LDAP_OPT_OFF」を設定するよう修正してください。

例)
rtn = ldap_set_option( ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF );

LDAPプロトコル拡張機能

  • ldap_extended_operation()

  • ldap_extended_operation_s()

  • ldap_parse_extended_result()

  • ber_bvfree()

左記の関数を使用している場合は、LDAPプロトコル拡張を使用しないように、関数を削除してください。

拡張コントロール機能

  • ldap_create_paging_control()

  • ldap_create_more_paging_control()

  • ldap_create_sort_control()

  • ldap_control_free()

  • ldap_controls_free()

  • ldap_get_entry_controls()

  • セションハンドルオプションのLDAP_OPT_SERVER_CONTROLS

左記の関数を削除し次の方法で修正してください。

  • ページング機能を使用している場合は、フィルタ条件を変更し、分割して検索してください。

  • サーバソート機能を使用している場合は、アプリケーションで受信結果をソートしてください。

エイリアス(別名参照)

  • セションハンドルオプションのLDAP_OPT_DEREF

エイリアスを使用している場合は、アプリケーションの左記の関数を削除し、Interstage ディレクトリサービスに同一エントリを複数登録してください。

  

■開発環境の変更

以下の位置が変更されました。

  

InfoDirectory

Interstage ディレクトリサービス

インクルードファイル


C:\Interstage\IDSDK\C\include


  /opt/FJSVidsdk/C/include


C:\Interstage\IREPSDK\include


/opt/FJSVirepc/include

リンク用ライブラリ


C:\Interstage\IDSDK\C\lib


/opt/FJSVidsdk/C/lib


C:\Interstage\IREPSDK\lib


/opt/FJSVirepc/lib

  

■ライブラリについて

以下が変更されました。

  

InfoDirectory

Interstage ディレクトリサービス

動的ライブラリ


libidldap2.dll


libidldap2.so

上記の名前が右記に変更されました。


F3FMirepldap2.dll


  libirepldap2.so (注)

アプリケーションで使用するライブラリ名を上記に変更してください。

静的ライブラリ


libidldap2.lib


libidldap2.a

上記の静的ライブラリは提供されません。


F3FMirepldap2.dll


libirepldap2.so

上記の動的ライブラリを使用するように修正してください。

注意

動的ライブラリは/usr/lib、/usr/lib64へのシンボリックリンクは設定されません。アプリケーション、または環境設定でライブラリへのパスを解決する必要があります。

2.3.3.2 Java言語(JNDI)アプリケーションの移行

Java言語(JNDI)アプリケーションの移行手順について説明します。

  

サポートされないインタフェース

InfoDirectoryで使用していたJNDIアプリケーションを移行する場合は、一部サポートされない機能がありますので、必要に応じて、アプリケーションを修正してください。
Interstage ディレクトリサービスでサポートされない機能と、その対処方法を以下に示します。

  

サポートされない機能

対処方法

証明書ベースの認証機能

  • java.naming.security.authentication

  • javax.naming.Context.SECURITY_AUTHENTICATION

左記の環境プロパティで"external"を使用している場合は、簡易認証("simple")に修正してください。

リフェラル機能

  • java.naming.referral

  • javax.naming.Context.REFERRAL

リフェラルを含むメッセージは返却されないため、左記の環境プロパティを使用している場合は、環境プロパティを削除してください。
なお、リフェラル先が存在する場合は、例外(PartialResultException)を通知します。

拡張コントロール機能

  • 検索結果のページング処理

  • 検索結果のソート処理

左記を使用している場合は次の方法で修正してください。

  • 「検索結果のページング処理」を使用している場合は、フィルタ条件を変更し、分割して検索してください。

  • 「検索結果のソート処理」を使用している場合は、アプリケーションで受信結果をソートしてください。

エイリアス(別名参照)

  • java.naming.ldap.derefAliases

エイリアスを使用している場合は、アプリケーションの左記の環境プロパティを削除し、Interstage ディレクトリサービスに同一エントリを複数登録してください。

  

2.3.3.3 LDAPコマンドの移行

LDAPコマンドには、以下の変更がありますので、注意してください。

■コマンドの格納先

コマンドの格納先を変更しました。

  

InfoDirectory

Interstage ディレクトリサービス


C:\Interstage\ID\Dir\sdk\C\bin


C:\Interstage\bin


/opt/FJSVidsdk/C/bin


/opt/FJSVirepc/bin

  

■オプションの機能差異

Interstage ディレクトリサービスのLDAPクライアントSDKでは、LDAPの最新の規約に正しく準拠するため、InfoDirectory SDKのLDAPコマンドと比較して、LDAPコマンドのオプションに機能差異があります。機能差異となるLDAPコマンドのオプションについて、以下に説明します。

また、各コマンドの詳細情報の出力形式についても違いがあります。詳細は、「-vオプションで出力する詳細情報の差異」で説明しています。

  

ldapdelete

旧オプション

新オプション

移行方法

-H
ヘルプ(Usage)の出力

-m
ヘルプ(Usage)の出力

新オプションを指定してコマンドを実行してください。

-C type
文字コードの指定

-G type
文字コードの指定

新オプションを指定してコマンドを実行してください。

なし

-H uri
リポジトリのホスト名、およびポート番号をURI形式で指定

新規追加オプション

なし

-r
ツリー末端までの削除

新規追加オプション

なし

-V
プログラムのバージョン情報を出力

新規追加オプション

-v
詳細情報の出力

-v
詳細情報の出力

機能は同じです。出力形式が違いますので、「-vオプションで出力する詳細情報の差異」で確認してください。

  

ldapmodify

旧オプション

新オプション

移行方法

-H
ヘルプ(Usage)の出力

-m
ヘルプ(Usage)の出力

新オプションを指定してコマンドを実行してください。

-C type
文字コードの指定

-G type
文字コードの指定

新オプションを指定してコマンドを実行してください。

-b
属性値の外部ファイルからの読み込み

オプション廃止

LDIFファイル内での外部ファイルの指定方法を変更してください。
【旧オプション時の指定方法】
属性名: ファイル
【新指定方法】
属性名:< ファイルをURL形式で指定
※従来から、上記での指定方法を推奨しています。

なし

-H uri
リポジトリのホスト名、およびポート番号をURI形式で指定

新規追加オプション

なし

-S file
エラー結果をファイル出力

新規追加オプション

なし

-V
プログラムのバージョン情報を出力

新規追加オプション

-v
詳細情報の出力

-v
詳細情報の出力

機能は同じです。出力形式が違いますので、「-vオプションで出力する詳細情報の差異」で確認してください。

  

ldapsearch

旧オプション

新オプション

移行方法

-H
ヘルプ(Usage)の出力

-m
ヘルプ(Usage)の出力

新オプションを指定してコマンドを実行してください。

-C type
文字コードの指定

-G type
文字コードの指定

新オプションを指定してコマンドを実行してください。

-U path
-tオプション指定で作成するファイルの出力先指定

-T path
-tオプション指定で作成するファイルの出力先指定

新オプションを指定してコマンドを実行してください。

-Q attr
tmp配下に検索結果の属性値をファイル出力

オプション廃止

-tオプションを使用してください。

-e
非ASCII文字をUTF-8でBase64符号化して出力

オプション廃止

なし。
用途がないため廃止します。

-E
指定属性をBase64で符号化して出力

オプション廃止

なし。
用途がないため廃止します。

-S attr
クライアントで属性attrについて結果をソート(昇順)します。
attrパラメタが""(空文字)である場合はDNでソートされます。

-S attr
クライアントで属性attrについて結果をソート(昇順)します。
attrパラメタが""(空文字)である場合はDNでソートされます。
-Sオプションで指定するソートのための属性を、attributesオプションで指定する検索属性に含む必要があります。
含まない場合、ソートされません。

属性attrで結果をソート(昇順)するためには、attributesオプションに、属性attrを指定してください。
例)
ldapsearch -b "ou=interstage,o=fujitsu,dc=com" -H ldap://hostname:389 -D "cn=manager,ou=interstage,o=fujitsu,dc=com" -w admin -S sn "objectclass=inetorgperson" sn

-t
tmp配下に検索結果をファイル出力。作成したファイルの絶対パスを標準出力

-t
tmp配下に検索結果をファイル出力。作成したファイルのURLを標準出力

機能は同じです。作成したファイルの絶対パスの表現が違いますので、確認してください。

filter
filterオプションを省略した場合、エラーになります。

filter
filterオプションを省略した場合、"(objectClass=*)"を指定したとみなします。

基本的に修正不要です。必要に応じて対応してください。

なし

-H uri
リポジトリのホスト名、およびポート番号をURI形式で指定

新規追加オプション

なし

-V
プログラムのバージョン情報を出力

新規追加オプション

-v
詳細情報の出力

-v
詳細情報の出力

機能は同じです。出力形式が違いますので、「-vオプションで出力する詳細情報の差異」で確認してください。

  

-vオプションで出力する詳細情報の差異

LDAPコマンドの-vオプションで出力する詳細情報の差異を示します。

  

ldapdelete、ldapmodify、ldapsearchコマンド共通

項目

旧LDAPコマンド

新LDAPコマンド

接続先ホスト名、ポート番号

ldap server name: XXXX
ldap server port: 99999

ldap_init( XXXX, 99999 )

LDAPプロトコルバージョン

ldap protocol version: 3

なし。

文字コード系

character type: SJIS

character type: SJIS
-Gオプションによるコード系指定時のみ出力

送信コード系

transmission type: UTF8

なし。

認証機構

mechanism: SIMPLE

なし。

認証方式

authentication method: PASSWORD
authentication method: SSL

SSL接続時
ldapssl_init( %s, %d )

リフェラル追跡

follow referrals: ON

なし。

接続先ホスト名、ポート番号のURI形式指定

なし。

ldap_initialize( %s )

  

ldapdeleteコマンド

項目

旧LDAPコマンド

新LDAPコマンド

削除するエントリのDN

deleting entry cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com

deleting entry "cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com"

削除成功時

entry removed

Delete Result:
Success (0)

下位エントリ削除

なし。

deleting children of: ou=Users2,ou=interstage,o=fujitsu,dc=com
removing ou=Users2,ou=interstage,o=fujitsu,dc=com
ou=Users2,ou=interstage,o=fujitsu,dc=com removed

  

ldapmodifyコマンド

項目

旧LDAPコマンド

新LDAPコマンド

追加/更新するエントリのDN

adding new entry cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com
エントリの区切りに空白行が存在します。

adding new entry "cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com"
エントリの区切りに空白行は存在しません。

変名
(古いRDNを残す場合)

new RDN: cn=User002 (keep existing values)
modifying rdn of entry cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com
rename completed

modifying rdn of entry "cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com"
new RDN: "cn=User002" (keep existing values)
modrdn completed

変名
(古いRDNを削除する場合)

new RDN: cn=User002 (do not keep existing values)
modifying rdn of entry cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com
rename completed

modifying rdn of entry "cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com"
new RDN: "cn=User002" (do not keep existing values)
modrdn completed

  

ldapsearchコマンド

項目

旧LDAPコマンド

新LDAPコマンド

サーチベース

search base: ou=interstage,o=fujitsu,dc=com

なし。

-fオプションでの検索フィルタのファイル指定

filter pattern: read filters file

filter pattern: (objectclass=*)

属性指定

returning: dn

requesting: dn

検索フィルタ指定

[filter: objectclass=*]

filter: objectclass=*

検索条件合致数

X matches

なし。

  

■メッセージ

Interstage ディレクトリサービスのLDAPクライアントSDKでは、LDAPの最新の規約に正しく準拠するため、メッセージを変更/追加しました。また、InfoDirectory SDKのLDAPコマンドで出力していたメッセージラベルのない形式(「メッセージ集」の「Interstage ディレクトリサービスが出力するメッセージ」を参照)から、メッセージラベルのある形式に変更しました。詳細は、「メッセージ内容の変更について」の「B.20 Interstage ディレクトリサービスのメッセージ」を参照してください。

  

LDIFの仕様