예제 #1
0
 internal static void AddGroupMailboxAccessSid(ClientSecurityContext clientSecurityContext, Guid groupMailboxGuid, UnifiedGroupMemberType memberType)
 {
     ArgumentValidator.ThrowIfInvalidValue <UnifiedGroupMemberType>("memberType", memberType, (UnifiedGroupMemberType x) => memberType != UnifiedGroupMemberType.Unknown || memberType != UnifiedGroupMemberType.None);
     SecurityIdentity.GroupMailboxMemberType groupMailboxMemberType = (memberType == UnifiedGroupMemberType.Member) ? SecurityIdentity.GroupMailboxMemberType.Member : SecurityIdentity.GroupMailboxMemberType.Owner;
     if (!clientSecurityContext.AddGroupSids(GroupMailboxAuthorizationHandler.GetGroupMailboxSidBinaryAndAttributes(groupMailboxGuid, groupMailboxMemberType)))
     {
         GroupMailboxAuthorizationHandler.Tracer.TraceError <SecurityIdentifier, Guid, uint>(0L, "GroupMailboxAccess: Unable to add well known group sid to user {0} for the mailbox = {1}...Error = {2}", clientSecurityContext.UserSid, groupMailboxGuid, NativeMethods.GetLastError());
         return;
     }
     GroupMailboxAuthorizationHandler.Tracer.TraceDebug <SecurityIdentifier, Guid>(0L, "GroupMailboxAccess: Successfully munged the token of the user {0} for the mailbox = {1}", clientSecurityContext.UserSid, groupMailboxGuid);
 }
예제 #2
0
 public static SidBinaryAndAttributes[] GetGroupMailboxSidBinaryAndAttributes(Guid groupMailboxGuid, SecurityIdentity.GroupMailboxMemberType groupMailboxMemberType)
 {
     SidBinaryAndAttributes[] result = null;
     try
     {
         SecurityIdentifier groupSecurityIdentifier = SecurityIdentity.GetGroupSecurityIdentifier(groupMailboxGuid, groupMailboxMemberType);
         result = new SidBinaryAndAttributes[]
         {
             new SidBinaryAndAttributes(groupSecurityIdentifier, 4U)
         };
     }
     catch (ArgumentException arg)
     {
         GroupMailboxAuthorizationHandler.Tracer.TraceError <Guid, SecurityIdentity.GroupMailboxMemberType, ArgumentException>(0L, "Unable to construct SidBinaryAndAttributes for group mailbox {0} and user type {1} : {2}", groupMailboxGuid, groupMailboxMemberType, arg);
         throw new ObjectNotFoundException(ServerStrings.GroupMailboxAccessSidConstructionFailed(groupMailboxGuid, groupMailboxMemberType.ToString()));
     }
     return(result);
 }
예제 #3
0
 public static ExternalUser CreateExternalUserForGroupMailbox(string externalUserName, string externalUserId, Guid mailboxGuid, SecurityIdentity.GroupMailboxMemberType groupMailboxMemberType)
 {
     return(new ExternalUser(new MemoryPropertyBag())
     {
         Name = externalUserName,
         ExternalId = externalUserId,
         SmtpAddress = SmtpAddress.Parse(externalUserId),
         Sid = SecurityIdentity.GetGroupSecurityIdentifier(mailboxGuid, groupMailboxMemberType)
     });
 }