【发布时间】:2016-03-01 18:52:02
【问题描述】:
Office 365/Outlook 2010 交换服务器, Outlook(2010) 插件开发。
场景:
简短的场景是,在我们的组织中,我们共享邮箱,用户将使用这些邮箱作为与客户交流的主要电子邮件,以及一个用于处理传入电子邮件的邮箱。用户帐户已在 Active Directory(云)中创建,而电子邮件帐户是通过 Office 365 管理员(Exchange Server)为相应用户创建的。
当前插件读取 AD 并检查用户是否属于 Active Directory 中的某个组。根据组,它分配用户是否可以代表他/她的经理发送电子邮件的权限。在第二种情况下,用户是否只能通过共享邮箱发送电子邮件(共享邮箱应该充当主帐户)
请注意,AD 中没有为用户分配电子邮件地址。但是,它应该做的是通读 AD 组并获取分配给该特定组(例如销售)的电子邮件地址。并且该信息应该与 Office 365 同步。
“销售”组的成员只能使用该共享邮箱 (sales@domain.com) 而不是他们的个人用户帐户 (thomas@domain.com) 发送电子邮件。在现有代码中检查了这种情况,但是我没有看到任何关于共享邮箱的实现,而是在名为例如的常规邮箱上。 Sales@domain.com(授权帐户不是共享邮箱)
有没有办法可以读取 AD 组并检索在 AD 组的数据字段中输入的相应共享邮箱地址,从而对某个组内的用户应用进一步的权限?
非常感谢您在这方面的帮助!
我在此处复制了当前查询,该查询是我正在处理的插件的一部分。
bool QueryAD(string EMailAdresse, string Gruppe)
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, Gruppe);
GroupMembershipCacheInitialized = true;
if (grp != null)
{
foreach (Principal p in grp.GetMembers(false))
{
if (((UserPrincipal)p).EmailAddress == EMailAdresse) // this doesnt make sense because p.EmailAddress is always null
{
GroupMembershipCache.Add(EMailAdresse, Gruppe);
return true;
}
}
grp.Dispose();
ctx.Dispose();
}
return false;
}
【问题讨论】:
标签: c# active-directory outlook-addin outlook-2010 exchange-server-2010