コメントの送付先: jndi@java.sun.com
目次
このドキュメントでは、LDAP サービスプロバイダの機能について説明します。主に、LDAP サービスプロバイダの動作を中心に説明します。 詳細は、「LDAP サービスプロバイダに対する JNDI 実装側のガイドライン」を参照してください。例および使用方法については、JNDI チュートリアルを参照してください。
LDAP サービスプロバイダでは、LDAP アクセスの基本機能が実装されます。LDAP サービスプロバイダでは、LDAP アクセスの基本機能が実装されます。 汎用的な LDAP コントロール、SASL 認証、RMI と CORBA オブジェクトの格納および読み込みに対するサポートなどを基本プロバイダに追加する場合は、「ブースターパック」をインストールしてください。 「ブースターパック」は、JNDI の Web サイトからダウンロードできます。
標準 | サポート | 備考 |
---|---|---|
LDAPv3 (RFC-2251) | はい | |
LDAPv3 属性 (RFC-2252) | はい | |
LDAPv3 識別名 (RFC-2253) | はい | |
LDAP 検索フィルタ (RFC-2254) | はい | |
LDAP URL 形式 (RFC-2255) | はい | |
LDAPv3 スキーマ (RFC-2256) | はい | |
LDAPv2 (RFC-1777) | はい |
プロパティ | サポート | 備考 |
---|---|---|
java.naming.batchsize | はい | デフォルト値は 1 |
java.naming.factory.control | はい | |
java.naming.factory.initial | はい | LDAP サービスプロバイダを初期コンテキストとして使用するときは、com.sun.jndi.ldap.LdapCtxFactory を指定する |
java.naming.factory.object | はい | |
java.naming.factory.state | はい | |
java.naming.language | No | 無視される |
java.naming.provider.url | はい | |
java.naming.referral | はい | |
java.naming.security.authentication | はい | simple、none |
java.naming.security.credentials | はい | |
java.naming.security.principal | はい | |
java.naming.security.protocol | はい |
プロパティ | サポート | 備考 |
---|---|---|
java.naming.ldap.attributes.binary | はい | |
java.naming.ldap.control.connect | はい | |
java.naming.ldap.deleteRDN | はい | |
java.naming.ldap.derefAliases | はい | |
java.naming.ldap.factory.socket | はい | java.naming.security.protocol プロパティに ssl が設定されているときは、デフォルト値は javax.net.ssl.SSLSocketFactory。詳細は、「SSL」を参照 |
java.naming.ldap.ref.separator | はい | |
java.naming.ldap.referral.limit | はい | |
java.naming.ldap.typesOnly | はい | |
java.naming.ldap.version | はい |
Netscape Directory Server 4.0 以前のリリースでは、RFC 2252 に準拠しているスキーマエントリはサポートされていません。Netscape サーバでは、特に、RFC 2252 と異なり、OID (SUP および SYNTAX の OID など) は単一引用符で区切り、MUST/MAY リストは括弧で囲む必要があります。Netscape Directory Server 4.0 のスキーマを更新するときは、この問題に対処するために、この com.sun.jndi.ldap.netscape.schemaBugs プロパティを使用する必要があります。次の値は、このプロパティ用に定義されたものです。
true
回避策を有効にする
false
回避策を無効にするこのプロパティが設定されない場合、デフォルト値は false になります。
次に例を示します。
この場合は、回避策が有効になります。env.put("com.sun.jndi.ldap.netscape.schemaBugs", "true");注 1: このプロパティは、初期コンテキストにだけ渡され、そのプロバイダで固定されます。addToEnvironment または removeFromEnvironment メソッドには影響されません。
注 2:Netscape Directory Server 4.1 を使用している場合、このプロパティを使用してはなりません。4.1 サーバでは、括弧の付かない MUST/MAY 句を含むオブジェクトクラス定義を構文解析する際に問題が発生します。単一の MUST/MAY 項目を含むオブジェクトクラス定義を作成または変更する場合、MUST/MAY リストに余分の値 (「objectClass」など) を追加することにより、このバグを回避してください。
このプロパティの値は、java.io.OutputStream オブジェクトです。 このオブジェクトに対して、LDAP ASN.1 BER の送受信パケットの 16 進ダンプが書き込まれます。このプロパティのデフォルトは定義されていません。
次に例を示します。
env.put("com.sun.jndi.ldap.trace.ber", System.out);この場合、LDAP プロトコルトレースは標準の出力ストリームに書き込まれます。注: このプロパティは、初期コンテキストにだけ渡され、そのプロバイダで固定されます。addToEnvironment または removeFromEnvironment メソッドには影響されません。
識別名の形式 | 備考 |
---|---|
String | 複合名とみなされる。複合名の最初のコンポーネントは、識別名として処理される。残りのコンポーネントは連合される |
名前 | CompositeName のインスタンスの場合は、複合名とみなされる。 つまり、最初の複合名のコンポーネントは、識別名として処理され、残りのコンポーネントは連合される。CompositeName のインスタンスでない場合は、解析済みの LDAP 名とみなされる。 この場合、Name の各コンポーネントは、RFC-2253 に定義されている LDAP 名のコンポーネントとなる |
LDAP URL 文字列 | LDAP URL 文字列が初期コンテキストに渡されると、RFC-2255 に基づいて解釈され、その識別名コンポーネントは RFC-2255 に基づいて解釈される |
getNameParser() 呼び出しから返された名前パーサによってパーサが返されます。 このパーサは、文字列名を受け取ると RFC-2253 に基づいて文字列名を解析し、コンポーネントに渡します。
属性値の形式 | サポート | 備考 |
---|---|---|
String 値 | はい | |
byte[] 値 | はい |
一部の LDAP サーバでは、属性値に対して言語の優先順位を指定するときに、属性の部分型、属性名の類語、および言語コードを使用することができます。この場合、LDAP サーバから返された属性名は、要求した属性名と異なることがあります。
LDAP では、属性名の大文字小文字が区別されます。このため、パラメータとして JNDI 操作に渡す属性のまとまりを作成するときは、大文字小文字が区別される属性クラスを使用することをお勧めします。次に例を示します。
Attributes attrs = new BasicAttributes(true); // ignoreCase=true
属性値を使用するときは、String および byte[] のどちらの場合も、その属性値の構文と形式の情報が必要です。属性値の構文と形式は、これらの情報が定義されているスキーマドキュメントで確認できます。
属性を JNDI 呼び出しに引数として指定するときは、その属性は LDAP ディレクトリに適用されているすべてのスキーマに合致していなければなりません。特に、新しい LDAP を作成するときは (Context.bind、 Context.rebind、または DirContext.createSubcontext を使用するときなど)、通常は objectClass 属性が必要です。
URL の使用法 | サポート | 備考 |
---|---|---|
LDAP URL を使用して LDAP サービスプロバイダを設定する | はい | |
URL を InitialDirContext メソッドに名前として渡す | はい | LDAP URL の属性、スコープ、フィルタ、および拡張コンポーネントは、search メソッドでは無視される |
LDAP 紹介で URL を使用する | はい | LDAP URL のスコープコンポーネントはサポートされる。属性、フィルタ、および拡張コンポーネントは無視される |
URL が、list、listBindings、および search 列挙の名前として返される | はい | |
連合された名前空間に URL をリンクする | はい |
格納および読み込みが可能なオブジェクト | サポート | 備考 |
---|---|---|
Reference オブジェクト | はい | |
Referenceable オブジェクト | はい | |
Serializable オブジェクト | はい | |
DirContext オブジェクト | はい |
例については、JNDI チュートリアルを参照してください。
スキーマツリー | サポート | 備考 |
---|---|---|
AttributeDefinition | はい | 属性定義の追加または削除はできるが、変更はできない |
ClassDefinition | はい | クラス定義の追加または削除はできるが、変更はできない |
SyntaxDefinition | はい | 構文定義の追加または削除はできるが、変更はできない |
MatchingRule | はい | 一致規則の追加または削除はできるが、変更はできない |
ExtensionDefinition | No | |
ControlDefinition | No | |
SASLMechanism | No |
Context メソッドのマッピング | サポート | 備考 |
---|---|---|
addToEnvironment | はい | |
bind | はい | |
close | はい | |
composeName | はい | |
destroySubcontext | はい | |
getEnvironment | はい | |
getNameInNamespace | はい | |
getNameParser | はい | |
list | はい | |
listBindings | はい | |
lookup | はい | LinkRef は対象外 |
lookupLink | はい | |
rebind | はい | |
removeFromEnvironment | はい | |
rename | はい | |
unbind | はい |
DirContext メソッドのマッピング | サポート | 備考 |
---|---|---|
bind | はい | |
createSubcontext | はい | |
destroySubcontext | はい | |
getAttributes | はい | |
getSchema | はい | |
getSchemaClassDefinition | はい | |
modifyAttributes | はい | |
rebind | はい | |
search | はい |
LdapContext メソッドのマッピング | サポート | 備考 |
---|---|---|
extendedOperation | はい | |
getRequestControls | はい | |
getResponseControls | はい | |
newInstance | はい | |
reconnect | はい | |
setRequestControls | はい |
EventDirContext メソッドのマッピング | サポート | 備考 |
---|---|---|
addNamingListener | はい | |
removeNamingListener | はい | |
targetMustExist | はい |
連合方法 | サポート | 備考 |
---|---|---|
連結 | はい | |
暗黙的な次のネームシステムポインタ | はい |
LDAP サービスプロバイダでは、複合名は「強く区分されている」とみなされます。つまり、複合名の最初のコンポーネントが識別名として処理され、残りのコンポーネントは次のネームシステムの名前として処理されます。たとえば、次の例では、次のネームシステムのルートのリストを出力しています。 このネームシステムは、LDAP コンテキストを超えて連合されています。 次に、マルチコンポーネントの複合名を使用して名前が参照されます。
// List the root of the nns, // Note use of the trailing slash to indicate traversal into the nns NamingEnumeration enum = ctx.list("cn=objects,ou=Sales/"); // A composite name lookup Object obj = ctx.lookup("cn=objects,ou=Sales/some/x/y/z");
イベント | サポート | 備考 |
---|---|---|
名前空間の変更の通知 | はい | 持続的検索コントロールを使用 |
オブジェクトの変更の通知 | はい | 持続的検索コントロールを使用 |
任意の通知 | はい |
permission java.net.SocketPermission "host[:port]", "connect";
コンテキストメソッドに渡された java.naming.factory.initial プロパティおよび URL 文字列名に指定されている、各ホストまたはポートに対して割り当てられます。
permission java.net.SocketPermission "host[:port]", "connect,accept";
Serializable オブジェクトを使用して格納された References および javaCodebase 属性の URL 文字列に指定されている、各ホストまたはポートに対して割り当てられます。