public static ObjectSecurity GetSecurity(this SecurableObject securable, TokenParser parser) { ObjectSecurity security = null; using (var scope = new PnPMonitoredScope("Get Security")) { var context = securable.Context as ClientContext; context.Load(securable, sec => sec.HasUniqueRoleAssignments); var roleAssignments = context.LoadQuery(securable.RoleAssignments.Include( r => r.Member.LoginName, r => r.RoleDefinitionBindings.Include( rdb => rdb.Name, rdb => rdb.RoleTypeKind ))); context.ExecuteQueryRetry(); if (securable.HasUniqueRoleAssignments) { security = new ObjectSecurity(); foreach (var roleAssignment in roleAssignments) { if (roleAssignment.Member.LoginName != "Excel Services Viewers") { foreach (var roleDefinition in roleAssignment.RoleDefinitionBindings) { if (roleDefinition.RoleTypeKind != RoleType.Guest) { security.RoleAssignments.Add(new Model.RoleAssignment() { Principal = parser.TokenizePrincipalLogin(roleAssignment.Member.LoginName), RoleDefinition = roleDefinition.Name }); } } } } } } return security; }