如何从Java/JNDI查询来自Windows用户的电子邮件?

如何从Java/JNDI查询来自Windows用户的电子邮件?,java,ldap,jndi,Java,Ldap,Jndi,我在网上搜索过,但找不到任何解决方案。 此外,我也尝试了许多不同的解决方案,但没有一种有效。 请在考虑这种情况时保持开放的心态 要求: 应使用Java/J2SE(控制台、GUI、任意) 不要仅使用任何外部或第三方jar/包JNDI 不要询问或存储用户密码 从LDAP中的Windows登录用户获取电子邮件。 假设: 不需要深入了解LDAP服务器的详细信息,它正在使用其他语言,如VBS/.Net/等,但不使用Java 注: VBS甚至可以请求其他用户(不是登录的用户)使用 我不知道LDAP

我在网上搜索过,但找不到任何解决方案。
此外,我也尝试了许多不同的解决方案,但没有一种有效。
请在考虑这种情况时保持开放的心态

要求:

  • 应使用Java/J2SE(控制台、GUI、任意)
  • 不要仅使用任何外部或第三方jar/包JNDI
  • 不要询问或存储用户密码
  • 从LDAP中的Windows登录用户获取电子邮件。
假设:

  • 不需要深入了解LDAP服务器的详细信息,它正在使用其他语言,如VBS/.Net/等,但不使用Java
注:

  • VBS甚至可以请求其他用户(不是登录的用户)使用

    我不知道LDAP服务器的配置,但是上面的信息对于了解它的人来说应该是有意义的

一段工作正常的VBS代码:

Dim objSysInfo, objUser<br>
Set objSysInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)
MsgBox objUser.mail
Dim objSysInfo,objUser
Set objSysInfo=CreateObject(“ADSystemInfo”) 设置objUser=GetObject(“LDAP://”&objSysInfo.UserName) MsgBox objUser.mail

如何使其工作?

这里的问题不是JNDI部分,而是以与
ADSystemInfo.UserName
相同的格式获取用户的登录名。您可以查看
System.getProperty(“user.name”)
是否返回正确的内容,否则您将进入某个ActiveX桥接器来模拟您发布的VB代码


LDAP部分非常直接地映射到JNDI中,您不应该对该部分有任何问题。

Windows和VBS API使用“SASL GSSAPI机制实现从客户端到Active Directory服务器的单点登录(SSO)”

有许多版本的Windows Active Directory和无数不同的方法,可以在您的实现中设置各种参数。因此,你的成功可能会有所不同

我发现了一篇文章,它可能会帮助你找到正确的方向:

谢谢您的回答,但它不符合要求。在VBS中尝试时,不需要身份验证。用户名用于实际搜索当前用户详细信息。Java/JNDI需要使用用户/密码绑定到LDAP服务器(简单的安全认证)以获取当前用户详细信息。当我尝试使用匿名时,它抛出一个异常,告诉我搜索当前用户详细信息需要用户名和密码(在VBS中,不需要用户和密码绑定/登录来获取当前用户详细信息)。你能帮我解决以下问题吗?VB必须以某种方式使用隐式或系统登录。你必须弄清楚怎么做。