Interstage Application Server Smart Repository運用ガイド
目次 索引 前ページ次ページ

第2章 機能> 2.4 エントリ管理

2.4.4 特殊文字を含むDNの指定

 コマンド、SDKで、DNに特殊文字を指定するには、その特殊文字の前に“\”(エンマーク)を置いてエスケープする必要があります。
 エスケープが必要な特殊文字を以下に示します。

エスケープが必要な特殊文字を含むDNを指定する場合の例を以下に示します。

cn=a\b,o=Fujitsu, Inc.,c=jp

コマンドの場合

 コマンドの場合は、特殊文字をエスケープし、さらに、その特殊文字を含む属性値を"(ダブルクォーテーション)で囲む必要があります。

cn="a\\b",o="Fujitsu\, Inc.",c=jp

SDK(C API)の場合

 LDAP、C言語それぞれで、“\”(エンマーク(バックスラッシュ))文字を特殊文字と扱います。いくつか例を示します。

 “\”を含むcn属性を指定するとします。

a\b

 LDAPの規約により“\”をエスケープする必要があります。

cn=a\\b

 C言語の仕様により、この名前を指定するために、それぞれの“\”をエスケープする必要があります。

char *name1 = "cn=a\\\\b";

 同様に、“,”(カンマ)、“"”(ダブルクォーテーション)の場合はそれぞれ次のようになります。

char *name2 = "cn=a\\,b";
char *name3 = "cn=a\\\"b";

 最初の例をC言語で使用する場合は、次のように記述します。

char *name = "cn=a\\\\b,o=Fujitsu\\, Inc.,c=jp";

SDK(JNDI)の場合

 JNDIは注意が必要です。
 LDAP、JNDI、Java言語それぞれで、\(エンマーク(バックスラッシュ))文字を特殊文字と扱うためです。いくつか例を示します。

 \を含むcn属性を指定するとします。

a\b

 LDAPの規約により\をエスケープする必要があります。

cn=a\\b

 JNDIの仕様により、この名前を指定するために、それぞれの\をエスケープする必要があります。

cn=a\\\\b

 Java言語の仕様により、この名前を文字列リテラルとして指定するために、それぞれの\をエスケープする必要があります。

String name1 = "cn=a\\\\\\\\b";

 同様に、,(カンマ)、"(ダブルクォーテーション)の場合はそれぞれ次のようになります。

String name2 = "cn=a\\\\,b";
String name3 = "cn=a\\\\\"b";

 最初の例をJNDIで使用する場合は、次のように記述します。

String name = "cn=a\\\\\\\\b,o=Fujitsu\\\\, Inc.,c=jp";

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005