| /* |
| * Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. Oracle designates this |
| * particular file as subject to the "Classpath" exception as provided |
| * by Oracle in the LICENSE file that accompanied this code. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| /** |
| * Defines the Java Naming and Directory Interface (JNDI) API. |
| * <p> |
| * Common standard JNDI environment properties that may be supported |
| * by JNDI providers are defined and documented in |
| * {@link javax.naming.Context}. Specific JNDI provider implementations |
| * may also support other environment or system properties, which are specific |
| * to their implementation. |
| * |
| * @implNote |
| * The following implementation specific environment properties are supported by the |
| * default LDAP Naming Service Provider implementation in the JDK: |
| * <ul> |
| * <li>{@code java.naming.ldap.factory.socket}: |
| * <br>The value of this environment property specifies the fully |
| * qualified class name of the socket factory used by the LDAP provider. |
| * This class must implement the {@link javax.net.SocketFactory} abstract class |
| * and provide an implementation of the static "getDefault()" method that |
| * returns an instance of the socket factory. By default the environment |
| * property is not set. |
| * </li> |
| * <li>{@code com.sun.jndi.ldap.connect.timeout}: |
| * <br>The value of this environment property is the string representation |
| * of an integer specifying the connection timeout in milliseconds. |
| * If the LDAP provider cannot establish a connection within that period, |
| * it aborts the connection attempt. |
| * The integer should be greater than zero. An integer less than |
| * or equal to zero means to use the network protocol's (i.e., TCP's) |
| * timeout value. |
| * <br> If this property is not specified, the default is to wait |
| * for the connection to be established or until the underlying |
| * network times out. |
| * <br> If a custom socket factory is provided via environment property |
| * {@code java.naming.ldap.factory.socket} and unconnected sockets |
| * are not supported, the specified timeout is ignored |
| * and the provider behaves as if no connection timeout was set. |
| * </li> |
| * <li>{@code com.sun.jndi.ldap.read.timeout}: |
| * <br>The value of this property is the string representation |
| * of an integer specifying the read timeout in milliseconds |
| * for LDAP operations. If the LDAP provider cannot get a LDAP |
| * response within that period, it aborts the read attempt. The |
| * integer should be greater than zero. An integer less than or |
| * equal to zero means no read timeout is specified which is equivalent |
| * to waiting for the response infinitely until it is received. |
| * <br>If this property is not specified, the default is to wait |
| * for the response until it is received. |
| * </li> |
| * <li>{@code com.sun.jndi.ldap.tls.cbtype}: |
| * <br>The value of this property is the string representing the TLS |
| * Channel Binding type required for an LDAP connection over SSL/TLS. |
| * Possible value is : |
| * <ul> |
| * <li>"tls-server-end-point" - Channel Binding data is created on |
| * the basis of the TLS server certificate. |
| * </li> |
| * </ul> |
| * <br>"tls-unique" TLS Channel Binding type is specified in RFC-5929 |
| * but not supported. |
| * <br>If this property is not specified, the client does not send |
| * channel binding information to the server. |
| * </li> |
| * </ul> |
| * <p>The following implementation specific system properties are supported by the |
| * default LDAP Naming Service Provider implementation in the JDK: |
| * <ul> |
| * <li>{@systemProperty com.sun.jndi.ldap.object.trustSerialData}: |
| * <br>The value of this system property is the string representation of a boolean value |
| * that controls the deserialization of java objects from the {@code javaSerializedData} LDAP |
| * attribute, reconstruction of RMI references from the {@code javaRemoteLocation} LDAP attribute, and |
| * reconstruction of {@linkplain javax.naming.BinaryRefAddr binary reference addresses} from |
| * the {@code javaReferenceAddress} LDAP attribute. |
| * To allow the deserialization or reconstruction of java objects from {@code javaSerializedData}, |
| * {@code javaRemoteLocation} or {@code javaReferenceAddress} attributes, the system property value |
| * can be set to {@code true} (case insensitive). |
| * <br>If the property is not specified the deserialization of java objects |
| * from the {@code javaSerializedData}, the {@code javaRemoteLocation}, or {@code javaReferenceAddress} |
| * attributes is not allowed. |
| * </li> |
| * <li>{@systemProperty jdk.jndi.object.factoriesFilter}: |
| * <br>The value of this system property defines a filter used by |
| * the JNDI runtime implementation to control the set of object factory classes which will |
| * be allowed to instantiate objects from object references returned by naming/directory systems. |
| * The factory class named by the reference instance will be matched against this filter. |
| * The filter property supports pattern-based filter syntax with the same format as |
| * {@link java.io.ObjectInputFilter.Config#createFilter(String) jdk.serialFilter}. Limit patterns |
| * specified in the filter property are unused. |
| * This property can also be specified as a {@linkplain java.security.Security security property}. |
| * This property is also supported by the <a href="{@docRoot}/jdk.naming.rmi/module-summary.html">default JNDI |
| * RMI Provider</a>. |
| * <br>The default value allows any object factory class specified by the reference |
| * instance to recreate the referenced object. |
| * </li> |
| * <li>{@systemProperty jdk.jndi.ldap.object.factoriesFilter}: |
| * <br>The value of this system property defines a filter used by |
| * the JDK LDAP provider implementation to further restrict the set of object factory classes which will |
| * be allowed to instantiate objects from object references returned by LDAP systems. |
| * The factory class named by the {@linkplain javax.naming.Reference reference instance} first will be |
| * matched against this specific filter and then against the global filter. The factory class is rejected |
| * if any of these two filters reject it, or if none of them allow it. |
| * The filter property supports pattern-based filter syntax with the same format as |
| * {@link java.io.ObjectInputFilter.Config#createFilter(String) jdk.serialFilter}. Limit patterns |
| * specified in the filter property are unused. |
| * <br>The default value allows any object factory class provided by the JDK LDAP provider |
| * implementation. |
| * <br>This system property will be used to filter LDAP specific object factories only if |
| * global {@link javax.naming.spi.ObjectFactoryBuilder} is {@linkplain |
| * javax.naming.spi.NamingManager#setObjectFactoryBuilder(javax.naming.spi.ObjectFactoryBuilder) |
| * not set}. |
| * </li> |
| * </ul> |
| * <p>Other providers may define additional properties in their module description: |
| * <ul> |
| * <li><a href="{@docRoot}/jdk.naming.dns/module-summary.html">DNS Naming Provider</a></li> |
| * <li><a href="{@docRoot}/jdk.naming.rmi/module-summary.html">RMI Naming Provider</a></li> |
| * </ul> |
| * @provides java.security.Provider |
| * |
| * @uses javax.naming.ldap.StartTlsResponse |
| * @uses javax.naming.ldap.spi.LdapDnsProvider |
| * @uses javax.naming.spi.InitialContextFactory |
| * |
| * @moduleGraph |
| * @since 9 |
| */ |
| module java.naming { |
| requires java.security.sasl; |
| |
| exports javax.naming; |
| exports javax.naming.directory; |
| exports javax.naming.event; |
| exports javax.naming.ldap; |
| exports javax.naming.spi; |
| exports javax.naming.ldap.spi; |
| |
| exports com.sun.jndi.toolkit.ctx to |
| jdk.naming.dns; |
| exports com.sun.jndi.toolkit.url to |
| jdk.naming.dns, |
| jdk.naming.rmi; |
| exports com.sun.naming.internal to |
| jdk.naming.rmi; |
| |
| uses javax.naming.ldap.StartTlsResponse; |
| uses javax.naming.spi.InitialContextFactory; |
| uses javax.naming.ldap.spi.LdapDnsProvider; |
| |
| provides java.security.Provider with |
| sun.security.provider.certpath.ldap.JdkLDAP; |
| } |