Java教程已经针对JDK 8编写。本页中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改以了解Java SE 9及其后续版本中更新的语言特性的摘要。
请参阅JDK发行说明了解所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息。
正如刚才所述,如果未设置任何身份验证环境属性,则默认的身份验证机制为"none"。如果客户端将Context.SECURITY_AUTHENTICATION环境属性设置为"none",则身份验证机制为"none",忽略所有其他身份验证环境属性。只有在确保忽略可能已设置的任何其他身份验证属性时,才需要显式地执行此操作。在任何情况下,客户端将被视为匿名客户端。这意味着服务器不知道也不关心客户端是谁,并且将允许客户端访问(读取和更新)由任何未经身份验证的客户端可访问的任何数据。
由于命名和目录操作教程中的所有目录示例都未设置任何身份验证环境属性,因此它们都使用匿名身份验证。
下面是一个明确将Context.SECURITY_AUTHENTICATION属性设置为"none"的示例
(尽管这样做并不严格必要,因为这是默认值)。
// 设置用于创建初始上下文的环境 Hashtable<String, Object> env = new Hashtable<String, Object>(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial"); // 使用匿名身份验证 env.put(Context.SECURITY_AUTHENTICATION, "none"); // 创建初始上下文 DirContext ctx = new InitialDirContext(env); // ... 与ctx进行有用的操作