B DSML構文
次の各トピックでは、Directory Services Markup Language (DSML)の構文について説明します。
ノート:
DSMLは、Oracle Fusion Middleware 11gリリース1 (11.1.1)では非推奨です(今後のリリースでサポートされない可能性があります)。
B.1 DSMLの機能
ディレクトリ・サービスは、分散コンピューティングの主要部分を形成します。XMLは、インターネット・アプリケーションの標準的なマークアップ言語になりつつあります。ディレクトリ・サービスがインターネットで普及するにつれ、ディレクトリ情報をXMLデータで表現することの必要性が急速に高まっています。この機能を使用すると、LDAPディレクトリ・サーバーとの情報交換が必要な、LDAPを認識しないアプリケーションの種類の増加に対応できます。
Directory Services Markup Language(DSML)は、LDAP情報および操作のXML表現を定義します。LDAP Data Interchange Format(LDIF)は、ディレクトリ情報、またはディレクトリ・エントリに適用する一連の変更の伝達に使用します。前者は属性値レコード、後者は変更レコードと呼ばれます。
B.2 DSMLの利点
Oracle Internet Directoryおよびインターネット・アプリケーションでDSMLを使用すると、異なるソースのデータを柔軟に統合できるようになります。また、DSMLを使用すると、LDAPを使用しないアプリケーションでLDAPベースのアプリケーションと通信でき、Oracle Internet Directoryクライアント・ツールによって生成されたデータの操作やファイアウォールを経由したディレクトリへのアクセスが容易になります。
DSMLはWeb上での配信に最適化されたXMLに基づいています。XMLの構造化データは均一で、アプリケーションやベンダーから独立しているため、多くの新しいフラット・ファイル・タイプの同期コネクタを作成できます。XML形式にすると、ディレクトリ・データが中間層で使用可能になり、より有効な検索を実行できるようになりました。
B.3 DSML構文の理解
DSMLバージョン1のドキュメントはディレクトリ・エントリまたはディレクトリ・スキーマ(あるいはその両方)を記述します。各ディレクトリ・エントリには識別名(DN)という一意の名前があります。
ディレクトリ・エントリにはディレクトリ属性といういくつかのプロパティと値のペアがあります。すべてのディレクトリ・エントリは複数のオブジェクト・クラスのメンバーです。エントリのオブジェクト・クラスは、エントリが取ることのできるディレクトリ属性を制約します。このような制約については、ディレクトリ・スキーマに記述されています。これは同じDSMLドキュメントに含まれる場合も、別のドキュメントに含まれる場合もあります。
次の項では、DSMLのトップレベルの構造およびディレクトリ・エントリとスキーマ・エントリの表現方法の概要を説明します。
B.3.1 DSMLのトップレベルの構造
DSMLのトップレベルでの文書要素の型はdsml
で、子要素としてdirectory-entries
とdirectory-schema
の要素を持ちます。
また、子要素directory-entriesは、型entryの子要素を持ちます。同様に、子要素directory-schemaは型classおよびattribute-typeの子要素を持ちます。
トップレベルでのDSML文書の構造は次のとおりです。
<!- a document with directory & schema entries --> <dsml:directory-entries> <dsml:entry dn="...">...</dsml:entry> . . . </dsml:directory-entries> . . . <dsml:directory-schema> <dsml:class id="..." ...>...</dsml:class> <dsml:attribute-type id="..." ...>...</dsml:attribute-type> . . . </dsml:directory-schema> </dsml:dsml>
B.3.2 DSMLのディレクトリ・エントリ
要素型entry
は、DSML文書のディレクトリ・エントリを表します。entry
要素には、エントリのディレクトリ属性を表す要素が含まれます。エントリの識別名は、XML属性dn
で指定します。
次に、ディレクトリ・エントリを記述するXMLエントリを示します。
<dsml:entry dn="uid=Heman, c=in, dc=oracle, dc=com"> <dsml:objectclass> <dsml:oc-value>top</dsml:oc-value> <dsml:oc-value ref="#person">person</dsml:oc-value> <dsml:oc-value>organizationalPerson</dsml:oc-value> <dsml:oc-value>inetOrgPerson</dsml:oc-value> </dsml:objectclass> <dsml:attr name="sn"> <dsml:value>Siva</dsml:value></dsml:attr> <dsml:attr name="uid"> <dsml:value>Heman</dsml:value></dsml:attr> <dsml:attr name="mail"> <dsml:attr name="givenname"> <dsml:value>Siva V. Kumar</dsml:value></dsml:attr> <dsml:attr name="cn"> <dsml:value>SVK@example.com</dsml:value></dsml:attr> <dsml:value>Siva Kumar</dsml:value></dsml:attr>
oc-value's ref
は、オブジェクト・クラスを定義するクラス要素へのURI参照です。この例の場合は、person
オブジェクト・クラスを定義する要素へのURI [9]参照です。子要素objectclass
およびattr
は、ディレクトリ・エントリのオブジェクト・クラスおよび属性を指定するために使用します。
B.3.3 DSMLのスキーマ・エントリ
要素型class
は、DSML文書のスキーマ・エントリを表します。class
要素は、参照を容易にするためにXML属性id
を取ります。
たとえば、person
オブジェクト・クラスのオブジェクト・クラス定義は次のようになります。
<dsml:class id="person" superior="#top" type="structural"> <dsml:name>person</dsml:name> <dsml:description>...</dsml:description> <dsml:object-identifier>2.5.6.6</object-identifier> <dsml:attribute ref="#sn" required="true"/> <dsml:attribute ref="#cn" required="true"/> <dsml:attribute ref="#userPassword" required="false"/> <dsml:attribute ref="#telephoneNumber" required="false"/> <dsml:attribute ref="#seeAlso" required="false"/> <dsml:attribute ref="#description" required="false"/> </dsml:class>
ディレクトリ属性も同様に記述されます。たとえば、cn
属性の属性定義は次のようになります。
<dsml:attribute-type id="cn"> <dsml:name>cn</dsml:name> <dsml:description>...</dsml:description> <dsml:object-identifier>2.5.4.3</object-identifier> <dsml:syntax>1.3.6.1.4.1.1466.115.121.1.44</dsml:syntax> </dsml:attribute-type>
B.4 DSMLで使用可能なツール
XMLフレームワークを使用すると、LDAP以外のアプリケーションを使用してディレクトリ・データにアクセスできます。
XMLフレームワークはアクセス・ポイントを広範囲に定義し、次のツールを提供します。
-
ldapadd
-
ldapaddmt
-
ldapsearch
関連項目:
構文および使用方法の詳細は、Oracle Fusion Middleware Oracle Identity ManagementリファレンスのOracle Internet Directoryのサーバー管理ツールに関する項を参照してください。
クライアント・ツールldifwrite
は、ディレクトリ・データおよびスキーマのLDIFファイルを生成します。これらのLDIFファイルをXMLに変換すると、XMLファイルをアプリケーション・サーバーに格納し、このXMLファイルに対して問合せを行うことができます。LDAPサーバーに対してLDAP操作を実行する場合と比べ、問合せとレスポンスにかかる時間が短縮されます。