IP Library Granted Patent US 10,997,557
Granted Patent B2
US 10,997,557 · App. 15/782,680 · Granted May 4, 2021

Method, apparatus, and computer program product for authorizing and authenticating user communication within an enterprise group-based communication platform

Inventors: Ilan Frank (Los Altos, CA); Daniel Stewart Butterfield (Vancouver, CA); Callum Henderson-Begg (San Francisco, CA); April Underwood (San Francisco, CA); Leah Jones (San Francisco, CA); Myles Grant (San Francisco, CA); Todd Wirth (San Francisco, CA); Eric Vierhaus (San Francisco, CA); Samantha Stoller (San Francisco, CA); Gregory Pelly (San Francisco, CA); Yongxing Deng (San Francisco, CA); Matthew Mullen (San Francisco, CA)
Assignee: Slack Technologies, Inc.
G06Q10/103H04L63/101H04L63/104H04W4/08H04W12/08H04W12/76
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,997,557
App. No.
15/782,680
Granted
May 4, 2021
Kind
B2
Abstract

The disclosure generally relates to an enterprise group-based communication system. Group-based communication channels may be created and access by client devices associated with users within the enterprise group-based communication system that have various identifiers associated therewith.

Claims (79)

1. A group-based communication server in an enterprise group-based communication system, the enterprise group-based communication system comprising a plurality of group-based communication channels, the group-based communication server comprising at least one processor and at least one memory including computer program code, the at least one memory and the computer program code configured to, with the at least one processor, cause the group-based communication server to:

receive a channel creation request to create a group-based communication channel within the enterprise group-based communication system, wherein the channel creation request comprises channel settings, and wherein the channel settings comprise one or more authorized group identifiers for accessing the group-based communication channel;

retrieve enterprise settings from an enterprise settings database, wherein the enterprise settings regulate each group-based communication channel of a plurality of group-based communication channels, and wherein the enterprise settings comprise a group identifier whitelist;

determine, based on a comparison of the channel settings and the enterprise settings, if the group-based communication channel is authorized for creation; and

in circumstances when it is determined that the group-based communication channel is authorized:

create the group-based communication channel according to the channel settings;

store messaging communication that is posted to the group-based communication channel to either an enterprise storage location or a group storage location based on the channel settings;

wherein the enterprise storage location is in a first memory address range and the group storage location is in a second memory address range different from the first memory address range;

receive a channel access request from a client device associated with the group-based communication channel;

retrieve a global identifier or a group identifier associated with the client device from an identifier database; and

determine whether to authorize the channel access request based on comparing the channel settings to one of the global identifier or the group identifier.

2. The group-based communication server of claim 1 , wherein the channel settings comprise a channel type value that indicates access control parameters, and the group-based communication server is further configured to create the group-based communication channel according to the access control parameters.

3. The group-based communication server of claim 2 , further configured to determine that the channel type value indicates an enterprise promoted channel type, and, in response, authorize access rights for each member of a corresponding enterprise to the group-based communication channel.

4. The group-based communication server of claim 2 , further configured to determine that the channel type value indicates a group-to-group channel type, and in response authorize access rights for members of the group-based communication system that are associated with one or more identified groups to the group-based communication channel, wherein the one or more identified groups are indicated in the channel settings.

5. The group-based communication server of claim 2 , further configured to determine that the channel type value indicates a private channel type, and in response authorize access rights for specific members of the group-based communication system to the group-based communication channel, wherein the specific members are indicated in the channel settings.

6. The group-based communication server of claim 3 , further configured to receive one or more messaging communications configured for display within the group-based communication channel and store to the enterprise storage location the received one or more messaging communications, wherein the enterprise storage location is further determined by a channel name string present in the channel settings.

7. The group-based communication server of claim 4 , further configured to receive one or more messaging communications configured for display within the group-based communication channel and store in the enterprise storage location the received one or more messaging communications, wherein the enterprise storage location is further determined by a channel name string present in the channel settings.

8. The group-based communication server of claim 5 , further configured to receive one or more messaging communications configured for display within the group-based communication channel and store to the group storage location the received one or more messaging communications, wherein the group storage location is further determined by a channel name string present in the channel settings.

9. The group-based communication server of claim 3 , wherein the channel access request includes a user identification value associated with the client device, wherein the user identification value is different from the global identifier and the group identifier; and

the group-based communication server is further configured to retrieve, from the identifier database, a global identifier associated with the client device based on the user identification value, and determine whether to authorize the client device access to the group-based communication channel based on the global identifier.

10. The group-based communication server of claim 4 , wherein the channel access request includes a user identification value associated with the client device or the global identifier associated with the client device, wherein the user identification value is different from the global identifier and the group identifier; and

the group-based communication server is further configured to retrieve, from the identifier database, a group identifier associated with the client device based on the user identification value or the global identifier, and determine whether to authorize the client device access to the group-based communication channel based on a comparison of the group identifier and the channel settings.

11. The group-based communication server of claim 5 , wherein the channel access request includes a user identification value associated with the client device wherein the user identification value is different from the global identifier and the group identifier; and

the group-based communication server is further configured to retrieve, from the identifier database, a global identifier and at least one group identifier associated with the client device based on the user identification value, and determine whether to authorize the client device access to the group-based communication channel based on a comparison of the group identifier, the global identifier, and the channel settings.

12. The group-based communication server of claim 1 , further configured to:

compare the received channel settings to the enterprise settings;

determine a first channel setting that does not comply with a corresponding first enterprise setting, and set the first channel setting to be equal to the first enterprise setting.

13. The group-based communication server of claim 1 , wherein the channel settings include an originator identifier that indicates an originator of the channel creation request for the group-based communication channel.

14. A method for authorizing communication in an enterprise group-based communication system, the method comprising the steps of:

receiving, by a group-based communication server, a channel creation request to create a group-based communication channel within the enterprise group-based communication system, wherein the channel creation request includes channel settings, and wherein the channel settings comprise one or more authorized group identifiers for accessing the group-based communication channel;

accessing, by the group-based communication server, an enterprise settings database to retrieve enterprise settings that regulate all group-based communication channels in the enterprise group-based communication system, and wherein the enterprise settings comprise a group identifier whitelist;

determining, by the group-based communication server, based on a comparison of the channel settings and the enterprise settings, if the group-based communication channel is authorized for creation; and

in circumstances when it is determined that the group-based communication channel is authorized:

creating, by the group-based communication server, the group-based communication channel according to the channel settings;

storing, by the group-based communication server, a messaging communication that is transmitted to the group-based communication channel to either an enterprise storage location or a group storage location based on the channel settings;

wherein the enterprise storage location is in a first memory address range and the group storage location is in a second memory address range different from the first memory address range;

receiving, by the group-based communication server, a channel access request from a client device associated with the group-based communication channel;

retrieving, by the group-based communication server, a global identifier or a group identifier associated with the client device from an identifier database; and

determining, by the group-based communication server, whether to authorize the channel access request based on comparing the channel settings to one of the global identifier or the group identifier.

15. The method of claim 14 , wherein the channel settings comprise a channel type value that indicates access control parameters, and the method further comprises creating, by the group-based communication server, the group-based communication channel according to the access control parameters.

16. The method of claim 15 , further comprising determining, by the group-based communication server, determine that the channel type value indicates an enterprise promoted channel type, and in response authorizing access rights for each member of a corresponding enterprise to the group-based communication channel.

17. The method of claim 15 , further comprising determining, by the group-based communication server, that the channel type value indicates a group-to-group channel type, and in response authorizing access rights for members of the group-based communication system that are associated with one or more identified groups to the group-based communication channel, wherein the one or more identified groups are indicated in the channel settings.

18. The method of claim 15 , further comprising determining, by the group-based communication server, that the channel type value indicates a private channel type, and in response authorizing, by the group-based communication server, access rights for specific members of the group-based communication system to the group-based communication channel, wherein the specific members are indicated in the channel settings.

19. The method of claim 16 , further comprising receiving, by the group-based communication server, one or more messaging communications configured for display within the group-based communication channel and storing, by the group-based communication server, in the enterprise storage location, the received one or more messaging communications, wherein the enterprise storage location is further determined by a channel name string present in the channel settings.

20. The method of claim 17 , further comprising receiving, by the group-based communication server, one or more messaging communications configured for display within the group-based communication channel and storing, by the group-based communication server, in the enterprise storage location, the received one or more messaging communications, wherein the enterprise storage location is further determined by a channel name string present in the channel settings.

21. The method of claim 18 , further comprising receiving, by the group-based communication server, one or more messaging communications configured for display within the group-based communication channel and storing, by the group-based communication server, in the group storage location the received one or more messaging communications, wherein the group storage location is further determined by a channel name string present in the channel settings.

22. The method of claim 16 , wherein the channel access request includes a user identification value associated with the client device, wherein the user identification value is different from the global identifier and the group identifier; and

the method further comprises retrieving, by the group-based communication server, from the identifier database, a global identifier associated with the client device based on the user identification value, and determining, by the group-based communication server, whether to authorize the client device access to the group-based communication channel based on the global identifier.

23. The method of claim 17 , wherein the channel access request includes a user identification value associated with the client device or the global identifier associated with the client device, wherein the user identification value is different from the global identifier and the group identifier; and

the method further comprises retrieving, by the group-based communication server, from the identifier database, a group identifier associated with the client device based on the user identification value or the global identifier, and determining, by the group-based communication server, whether to authorize the client device access to the group-based communication channel based on a comparison of the group identifier and the channel settings.

24. The method of claim 18 , wherein the channel access request includes a user identification value associated with the client device, wherein the user identification value is different from a global identifier and the group identifier; and

the method further comprises retrieving, by the group-based communication server, from the identifier database, a global identifier and at least one group identifier associated with the client device based on the user identification value, and determining, by the group-based communication server, whether to authorize the client device access to the group-based communication channel based on a comparison of the group identifier, the global identifier, and the channel settings.

25. The method of claim 14 , further comprising:

comparing the received channel settings to the enterprise settings; and

determining a first channel setting that does not comply with a corresponding first enterprise setting, and setting the first channel setting to be equal to the first enterprise setting.

26. The method of claim 14 , wherein the channel settings include an originator identifier that indicates an originator of the channel creation request for the group-based communication channel.

27. An enterprise group-based communication system for controlling access to one or more group-based communication channels comprising a group-based communication repository comprising an enterprise settings database and an identifier database and a group-based communication server configured to:

receive a channel creation request to create a group-based communication channel within the enterprise group-based communication system, wherein the channel creation request includes channel settings, and wherein the channel settings comprise one or more authorized group identifiers for accessing the group-based communication channel;

access the enterprise settings database to retrieve enterprise settings that regulate all group-based communication channels in the enterprise group-based communication system;

determine, based on a comparison of the channel settings and the enterprise settings, if the group-based communication channel is authorized for creation, and wherein the enterprise settings comprise a group identifier whitelist; and

in circumstances when it is determined that the group-based communication channel is authorized:

create the group-based communication channel according to the channel settings;

store a messaging communication that is input into the group-based communication channel to either an enterprise storage location or a group storage location based on the channel settings;

wherein the enterprise storage location is in a first memory address range and the group storage location is in a second memory address range different from the first memory address range;

receive a channel access request from a client device associated with the group-based communication channel;

retrieve a global identifier or a group identifier associated with the client device from the identifier database; and

determine whether to authorize the channel access request based on comparing the channel settings to one of the global identifier or the group identifier.

28. The group-based communication server of claim 4 , further configured to:

retrieve, from the identifier database, the global identifier associated with the client device;

determine one or more group identifiers associated with the global identifier;

determine whether to authorize the client device access to the group-based communication channel based on a comparison of the one or more group identifiers with two or more of the one or more identified groups; and

in circumstances where at least one of the one or more group identifiers does not match at least one of the two or more identified groups:

in response to determining, based on access control parameters of the two or more identified groups that at least one of the two or more identified groups is joinable, transmit a request to a client device of a group administrator of at least one of the two or more identified groups requesting access to the group for the client device.

29. The method of claim 17 , further comprising

retrieving, by the group-based communication server, from the identifier database, the global identifier associated with the client device;

determining, by the group-based communication server, one or more group identifiers associated with the global identifier;

determining, by the group-based communication server, whether to authorize the client device access to the group-based communication channel based on a comparison of the one or more group identifiers with the two or more identified groups; and

in circumstances where at least one of the one or more group identifiers does not match at least one of the two or more identified groups:

in response to determining, by the group-based communication server and based on access control parameters of the two or more identified groups that at least one of the two or more identified groups is joinable, transmitting a request to a client device of a group administrator of at least one of the two or more identified groups requesting access to the group for the client device.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2023
From: SLACK TECHNOLOGIES, LLC
To: SALESFORCE, INC.
Reel/Frame 064642/0564 →
MERGER Recorded Jul 29, 2021
From: SLACK TECHNOLOGIES, INC.
To: SLACK TECHNOLOGIES, LLC
Reel/Frame 057475/0404 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 49332/0349 Recorded Jul 19, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 057649/0882 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2020
From: FRANK, ILAN; BUTTERFIELD, DANIEL STEWART; HENDERSON-BEGG, CALLUM; UNDERWOOD, APRIL; JONES, LEAH; GRANT, MYLES; WIRTH, TODD; VIERHAUS, ERIC; STOLLER, SAMANTHA; PELLY, GREGORY; DENG, YONGXING; MULLEN, MATTHEW
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 054207/0001 →
PATENT SECURITY AGREEMENT Recorded May 30, 2019
From: SLACK TECHNOLOGIES, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 049332/0349 →
Continuity (3)
Provisional Application 62554952 · Sep 6, 2017
Provisional Application 62408670 · Oct 14, 2016
Related Publication 20180197144A1 · Jul 12, 2018
Cited By (4)
US 12,288,190 US 12,363,226 US 12,375,570 US 12,477,067