我需要编写一个查询Active Directory并返回有权使用某个共享邮箱的用户列表的C#应用程序。
我已经与我们的支持部门进行了交谈,他们说每个共享邮箱都有一个关联的安全组。为了授予用户对共享邮箱的访问权限,他们使用户成为关联的安全组的成员。
我的问题是共享邮箱和AD中的安全组之间的链接是什么?如何确定哪个安全组与哪个共享邮箱相关联?
最佳答案
您可以在Active Directory中使用“共享邮箱”对象的msExchMailboxSecurityDescriptor属性,该属性将为您提供邮箱的DACL。例如How to read msExchMailboxSecurityDescriptor attribute in C#
如何确定哪个安全组与哪个共享邮箱相关联?
除了枚举每个共享邮箱上的每个DACL之外,没有其他直接方法。如果通过AlternativeMailbox元素https://msdn.microsoft.com/en-us/library/ee237925(v=EXCHG.80).aspx被自动映射,则自动发现将返回特定用户有权访问的所有邮箱。
干杯
格伦
编辑查看完整的程序集名称,您应该可以自己完成其余的工作
byte[] DaclByte = (Byte[])DirectoryEntry.Properties["msExchMailBoxSecurityDescriptor"][0];
System.DirectoryServices.ActiveDirectorySecurity adDACL = new ActiveDirectorySecurity();
adDACL.SetSecurityDescriptorBinaryForm(DaclByte);
System.Security.AccessControl.AuthorizationRuleCollection aclCollection = adDACL.GetAccessRules(true, false, typeof(System.Security.Principal.SecurityIdentifier));
foreach (System.Security.AccessControl.AuthorizationRule ace in aclCollection)
{
关于c# - Active Directory共享邮箱用户权限,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30532315/