Digest-MD5

Digest-MD5 机制在RFC 2831中描述。它基于 HTTP 摘要认证(RFC 2251)。在 Digest-MD5 中,LDAP 服务器将包含其愿意支持的各种身份验证选项以及特殊令牌的数据发送到 LDAPClient 端。Client 端通过发送加密的响应来进行响应,该响应指示其已选择的身份验证选项。响应以证明 Client 端知道其密码的方式进行加密。然后,LDAP 服务器解密并验证 Client 端的响应。

要使用 Digest-MD5 身份验证机制,必须按如下所示设置身份验证环境属性。

following example显示了 Client 端如何使用 Digest-MD5 对 LDAP 服务器执行身份验证。

// Set up the environment for creating the initial context
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");

// Authenticate as C. User and password "mysecret"
env.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5");
env.put(Context.SECURITY_PRINCIPAL, 
        "dn:cn=C. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");

// Create the initial context
DirContext ctx = new InitialDirContext(env);

// ... do something useful with ctx

Note:

Oracle 目录服务器 v5.2支持具有明文密码的用户的 Digest-MD5 身份验证机制。创建用户之前,必须设置密码加密 Pattern。如果您已经创建了该用户,则将其删除并重新创建。要使用 管理 控制台设置密码加密 Pattern,请选择“配置”选项卡和“数据”节点。在“密码”窗格中,为“密码加密”选择“不加密(清除)”选项。服务器接受简单的用户名(即具有一个的条 Object"uid"属性的值)和用户名的“ dn:”格式。有关详细信息,请参阅服务器的文档。

指定领域

在 Digest-MD5 身份验证中,您必须对特定领域进行身份验证。您可以使用以下身份验证环境属性来指定领域。如果未指定领域,则将使用服务器提供的任何领域。

following example显示了如何设置环境属性以使用 Digest-MD5 和指定的领域执行身份验证。要使此示例在您的环境中工作,必须更改源代码,以便该领域值反映您在目录服务器上配置的内容。

// Authenticate as C. User and password "mysecret" in realm "JNDITutorial"
env.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5");
env.put(Context.SECURITY_PRINCIPAL, 
        "dn:cn=C. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");
env.put("java.naming.security.sasl.realm", "JNDITutorial");

如果您需要使用privacy protection和其他 SASL 属性,请在《 JNDI 教程》中进行讨论。

首页