使用Exchange EWS SOAP,如何获取给定用户名的电子邮件地址

时间:2013-09-12 17:55:06

标签: node.js exchange-server exchangewebservices

我正在使用Exchange Web服务端点将NodeJS应用程序的登录集成到公司的Active Directory中。这样我就可以验证提供的凭据(用户名和密码)是否与Active Directory用户的凭据匹配。

到目前为止,我能够成功验证用户名/密码对是否有效。我找不到解决办法的方法是获取用户名的电子邮件地址。

我无法使用LDAP直接查询Active Directory,因为NodeJS应用程序将托管在公司网络之外。可用选项是使用Exchange Web服务(2010)端点。

我目前正在进行ResolveNames操作http://msdn.microsoft.com/en-us/library/exchange/aa563518(v=exchg.150).aspx

问题是,使用用户名作为UnresolvedEntry值执行Resolvenames将返回多个Resolutions,例如,如果用户名为john,并且目录中还有其他johns,{{ 1}}查询也将返回这些。

我正在寻找一种方法来明确地使用EWS获取用户名的电子邮件地址(对应于用于查询EWS SOAP服务的有效凭据)。

1 个答案:

答案 0 :(得分:1)

从未遇到过提供登录用户的电子邮件地址的直接方法,但您可以通过创建PostItem然后通过其PostItem.getFrom()方法获取电子邮件地址来执行简单的黑客攻击,例如:

    PostItem postItem = new PostItem( service );
    postItem.setBody( MessageBody.getMessageBodyFromText("Test for email-address " ) );
    postItem.save();

    postItem = PostItem.bind( service , postItem.getId() ); 
    System.out.println( postItem.getFrom() );

    postItem.delete( DeleteMode.HardDelete );