首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于VDS LDAP的身份验证

基于VDS LDAP的身份验证
EN

Stack Overflow用户
提问于 2015-10-28 10:16:01
回答 1查看 4.1K关注 0票数 0

我想使用Java针对VDS(虚拟目录服务器)对用户进行身份验证。

  • VDS与LDAP有何不同?还是VDS也在研究LDAP协议?

请帮助使用任何示例Java代码来验证VDS

对LDAP进行身份验证的示例代码如下所示

代码语言:javascript
复制
String userName = "John P R-Asst General Manager";
String passWord = "asdfgh123";
String base ="OU=SOU,DC=example,DC=com";
String dn = "cn=" + userName + "," + base;

String ldapURL = "ldap://mdsdc3.example.com:389";
authEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
authEnv.put(Context.PROVIDER_URL, ldapURL);
authEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
authEnv.put(Context.SECURITY_PRINCIPAL, dn);
authEnv.put(Context.SECURITY_CREDENTIALS, password);

try {
    DirContext authContext = new InitialDirContext(authEnv);
    return true;

} catch (NamingException namEx) {
    return false;
} 

要针对VDS进行身份验证,需要一个完整的dn。因为根据专家的说法,只需要将用户名和密码发送到VDS。它将自动找到它的DN并进行身份验证。如果有人提供关于ldap和vds的好参考资料,我们将非常感激。

EN

回答 1

Stack Overflow用户

发布于 2015-10-30 12:26:14

虚拟目录服务器是一种服务器类型,它提供身份的统一视图,而不管它们是如何存储的。(或者您可能更喜欢维基百科的定义:“为身份管理应用程序和服务平台提供单一访问点的软件层”)。

LDAP是一种用于与目录服务器通信的协议(因此是"P")。

LDAP和VDS之间没有必要的链接,但很可能VDS提供和LDAP接口,可能还有其他编程接口(尤其是Kerberos)。您如何与VDS通信的细节将取决于您试图与之交谈的配置,但LDAP是一个很好的选择。

关于需要一个完整的DN,您甚至不需要一个完整的DN来根据普通的Active进行身份验证。更常见的模式是提供类似于DOMAIN\username (使用sAMAccountName)或username@dc.example.com (即user principal name)的东西作为SECURITY_PRINCIPAL。在您的示例中,用户需要键入John P R-Asst General Manager,而不是他们可能认为是“用户名”的任何内容。

但是,您确实需要计算出您试图与之通信的VDS所需的用户名。它还需要DOMAIN\username吗?这些细节说明,无论谁运行与您通信的VDS,都应该能够提供给您。

在代码中,您应该得到这样的结果(假设您可以使用LDAP):

代码语言:javascript
复制
String userName = "DOMAIN\johnp";
String passWord = "asdfgh123";

String ldapURL = "ldaps://vds.example.com";
authEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
authEnv.put(Context.PROVIDER_URL, ldapURL);
authEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
authEnv.put(Context.SECURITY_PRINCIPAL, username);
authEnv.put(Context.SECURITY_CREDENTIALS, password);

try {
    DirContext authContext = new InitialDirContext(authEnv);
    return true;
} catch (NamingException namEx) {
    return false;
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33388306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档