IP Library Granted Patent US 10,880,272
Granted Patent B2
US 10,880,272 · App. 15/493,124 · Granted Dec 29, 2020

Secure software client

Inventors: Curtis Schwebke (Los Gatos, CA); Evren Bingol (San Francisco, CA)
Assignee: Wyse Technology L.L.C.
H04L63/0281G06F9/452H04L63/0272
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,880,272
App. No.
15/493,124
Granted
Dec 29, 2020
Kind
B2
Abstract

A secure software client is provided. A secure software client can be partitioned into a web application that functions as the user interface and a proxy that performs a number of functions to provide a desktop-like experience within the web application. The web application can be isolated within the browser and can communicate with the proxy via a secure communication channel thereby allowing the proxy to be isolated from other types of access. The proxy can generate a desktop in the form of HTML5 content that the web application can render. The proxy can customize the desktop to include representations of applications or other functionality that are available to the user. The web application can detect user interaction with the HTML5 content and relay the interaction to the proxy via the secure communication channel to allow the proxy to perform an appropriate function.

Claims (46)

1. One or more non-transitory computer storage media storing computer executable instructions which when executed on one or more processors implement a secure software client comprising:

a proxy that executes as a native application on a computing device of the user; and

a web application that executes within a browser on the computing device of the user, the web application being configured to communicate with the proxy, via a communication channel, to receive user interface content that the web application employs to generate and display a desktop within the browser on the computing device, wherein the user interface content is HTML5 content;

wherein the proxy is configured to generate and send the user interface content that the web application employs to generate and display the desktop by:

identifying multiple applications that the user of the computing device is allowed to access, the multiple applications including at least one remotely hosted application and at least one local application that is hosted on the computing device;

defining, for each of the multiple applications, a corresponding representation of the application within the user interface content, wherein the representation for each of the at least one remotely hosted application includes connection information for the remotely hosted application; and

sending the user interface content to the web application to thereby cause the web application to generate and display the desktop within the browser, the desktop including the representations of the multiple applications to thereby enable the user to select any of the representations that are displayed in the desktop to invoke the corresponding application;

wherein, in response to the representation of any of the at least one remotely hosted application being selected in the desktop displayed within the browser, the web application launches a separate browser window which uses the connection information included in the selected representation to display a user interface of the respective remotely hosted application within the separate browser window;

wherein, in response to the representation of any of the at least one local application being selected in the desktop displayed within the browser, the web application sends a communication to the proxy via the communication channel indicating that the representation of the local application was selected, the communication specifying a location of the selected representation within the desktop, and the proxy employs the location included in the communication to identify the local application and cause the local application to be launched on the computing device; and

wherein the user interface content further includes a representation of content to which the user has access, and wherein, in response to the representation of the content to which the user has access being selected, the web application is configured to send a second communication to the proxy via the communication channel indicating that the representation of the content to which the user has access was selected, and wherein, in response to receiving the second communication, the proxy is configured to generate additional user interface content that includes a representation of one or more files or folders included in the content to which the user has access and to send the additional user interface content to the web application via the communication channel, and wherein the web application is configured to display the additional user interface content as part of the desktop.

2. The computer storage media of claim 1 , wherein employing the location included in the communication to identify the local application comprises accessing mappings between zones of the desktop and local applications.

3. The computer storage media of claim 1 , wherein the multiple applications include multiple remotely hosted applications.

4. The computer storage media of claim 1 , wherein the multiple applications include multiple local applications.

5. The computer storage media of claim 1 , wherein the additional user interface content includes a representation of a first file that is associated with a first application, and wherein, in response to the representation of the first file being selected, the web application is configured to cause the first file to be opened within the first application.

6. The computer storage media of claim 1 , wherein the communication channel is a web socket.

7. The computer storage media of claim 1 , wherein the proxy and the browser are configured to execute in separate secure enclaves.

8. The computer storage media of claim 1 , wherein the additional user interface content comprises a web view of the user's content, the web view incorporating content stored in multiple locations.

9. The computer storage media of claim 8 , wherein the multiple locations include:

multiple cloud storage locations; or

at least one cloud storage location and at least one network or local storage location.

10. The computer storage media of claim 1 , wherein the proxy is configured to cast at least a portion of the user interface content to a display device or to another web application.

11. The computer storage media of claim 1 , wherein the proxy is configured to dynamically establish a peer-to-peer VPN session.

12. A method for providing a secure software client, the method comprising:

providing a proxy that executes as a native application on a computing device of a user;

providing a web application that executes within a browser on the computing device of the user, the web application being configured to communicate with the proxy via a communication channel;

generating, by the proxy, user interface content defining a desktop that includes multiple representations of respective-multiple applications that the proxy determines the user is allowed to access, the multiple applications including at least one remotely hosted application and at least one local application that is hosted on the computing device, wherein the representation for each of the at least one remotely hosted application includes connection information for the remotely hosted application, wherein the user interface content further includes a representation of content to which the user has access and wherein the user interface content is HTML 5 content;

receiving, at the web application, the user interface content defining the desktop;

rendering, by the web application and within the browser, the user interface content to cause the desktop to be displayed in the browser such that the multiple representations of the respective multiple applications and the representation of the content to which the user has access are displayed to the user as part of the desktop;

detecting, by the web application, first user input to the desktop displayed in the browser, the first user input selecting a first representation of the multiple representations;

sending, by the web application and to the proxy via the communication channel, one or more communications that identify a location of the first user input within the desktop;

determining, by the proxy, that the location is associated with the first representation of the multiple representations, the first representation being associated with a first application of the multiple applications, the first application being a local application;

based on the determination, invoking the first application on the computing device,

detecting, by the web application, second user input to the desktop displayed in the browser, the second user input selecting a second representation of the multiple representations, the second representation being associated with a second application of the multiple applications, the second application being a remotely hosted application;

in response to the second user input launching, by the web application, a separate browser window which uses the connection information included in the second representation to display a user interface of the second application within the separate browser window;

detecting, by the web application, third user input to the desktop displayed in the browser, the third user input selecting the representation of the content to which the user has access;

sending, by the web application and to the proxy via the communication channel, one or more second communications indicating that the representation of the content to which the user has access was selected;

in response to receiving the one or more second communications, generating, by the proxy, additional user interface content that includes a representation of one or more files or folders included in the content to which the user has access and sending the additional user interface content to the web application via the communication channel; and

in response to receiving the additional user interface content, displaying, by the web application, the additional user interface content as part of the desktop.

13. A system comprising:

a first computing device on which a browser is executed and which a user employs to access a desktop displayed in the browser;

a proxy that is executed natively on the first computing device or on a second computing device; and

a web application that is executed in the browser, the web application and the proxy being configured to communicate via a communication channel, the proxy being configured to generate user interface content to represent the desktop and to send the user interface content over the communication channel to the web application to thereby cause the web application to display the desktop within the browser, wherein the user interface content is HTML5 content;

wherein the user interface content defines multiple representations of respective multiple applications that the user is allowed to access, the multiple applications including at least one remotely hosted application and at least one local application that is hosted on the first computing device, wherein the representation for each of the at least one remotely hosted application includes connection information for the remotely hosted application,

wherein, in response to the representation of any of the at least one remotely hosted application being selected in the desktop displayed within the browser, the web application launches a separate browser window which uses the connection information included in the selected representation to display a user interface of the respective remotely hosted application within the separate browser window;

wherein, in response to the representation of any of the at least one local application being selected in the desktop displayed within the browser, the web application sends a communication to the proxy via the communication channel indicating that the representation of the local application was selected, the communication specifying a location of the selected representation within the desktop, and the proxy employs the location included in the communication to identify the local application and cause the local application to be launched on the first computing device; and

wherein the user interface content further includes a representation of content to which the user has access, and wherein, in response to the representation of the content to which the user has access being selected, the web application is configured to send a second communication to the proxy via the communication channel indicating that the representation of the content to which the user has access was selected, and wherein, in response to receiving the second communication, the proxy is configured to generate additional user interface content that includes a representation of one or more files or folders included in the content to which the user has access and to send the additional user interface content to the web application via the communication channel, and wherein the web application is configured to display the additional user interface content as part of the desktop.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
MERGER Recorded May 9, 2022
From: WYSE TECHNOLOGY L.L.C.
To: DELL MARKETING CORPORATION
Reel/Frame 059912/0109 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (042769/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2017
From: SCHWEBKE, CURTIS; BINGOL, EVREN
To: WYSE TECHNOLOGY L.L.C.
Reel/Frame 042087/0669 →
Continuity (1)
Related Publication 20180309728A1 · Oct 25, 2018