IP Library Granted Patent US 9,542,546
Granted Patent B2
US 9,542,546 · App. 13/631,391 · Granted Jan 10, 2017

System and method for implicitly resolving query scope in a multi-client and multi-tenant datastore

Inventors: Jason Wallis (Round Rock, TX); Jonathan Gill (Austin, TX); Gregory Murray (Austin, TX); Rob Hayes (Cedar Park, TX)
Assignee: Volusion, Inc.
G06F21/335H04L63/0807H04L2463/102
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 9,542,546
App. No.
13/631,391
Granted
Jan 10, 2017
Kind
B2
Abstract

An apparatus comprising a multi-tenant datastore and a processor coupled to the multi-tenant datastore, wherein the processor is configured to receive a request comprising one or more security tokens, wherein the one or more security tokens comprise identification information, and generate a query based on the request to access the multi-tenant datastore, wherein generating the query comprises deriving a query scope based on the one or more security tokens.

Claims (53)

1. An apparatus comprising:

a multi-tenant datastore; and

a hardware processor coupled to the multi-tenant datastore, wherein the processor is configured to:

receive a request comprising an application token, a user token, and a tenant identifier, wherein the application token identifies one of multiple applications hosted by the multi-tenant datastore, wherein the user token identifies one of multiple users of the multi-tenant datastore, and wherein the tenant identifier identifies one of multiple tenants hosted by the multi-tenant datastore;

generate a query based on the request to access the multi-tenant datastore, wherein generating the query comprises deriving a query scope based on the request, and wherein the query scope is limited to data in the multi-tenant datastore that is associated with the one of the multiple applications, the one of the multiple users, and the one of the multiple tenants;

update the application token and the user token after a predetermined interval of time has passed to generate an updated application token and an updated user token; and

generate a second query to access the multi-tenant datastore, wherein the second query is based on the updated application token, the updated user token, and the tenant identifier,

wherein the request is sent from a third party application and received by the hardware processor via an application programming interface (API),

wherein the application token comprises information of an application identification (ID),

wherein the multi-tenant datastore comprises a plurality of tables divided into groups,

wherein each group of tables is assigned to one of the multiple tenants, and

wherein each one of the multiple tenants is limited to only be able to access the group of tables assigned to the one of the multiple tenants.

2. The apparatus of claim 1 , wherein the application ID comprises a function identification variable (FID) and a shared secret, wherein the third party application comprises a product recommendation engine, wherein the product recommendation engine lists products on top of a webpage based on a personal preference of a customer, and wherein the personal preference of the customer is obtained through a social networking site.

3. The apparatus of claim 1 , wherein the request further comprises a uniform resource locator (URL), wherein deriving the query scope comprises determining the tenant identifier based on the URL, wherein the request is in a hypertext transfer protocol (HTTP) format, wherein the tenant identifier is extracted from the URL, wherein the tenant identifier is a base portion of the URL, and wherein the tenant identifier is used along with the user token and the application token to derive the query scope.

4. The apparatus of claim 1 , wherein the user token comprises information of a user identifier, wherein the user identifier comprises a username and a password, and wherein the username and the password are encrypted.

5. A method of accessing a multi-tenant datastore comprising:

receiving a request comprising an application token, a user token, and a tenant identifier, wherein the application token identifies one of multiple applications hosted by the multi-tenant datastore, wherein the user token identifies one of multiple users of the multi-tenant datastore, and wherein the tenant identifier identifies one of multiple tenants hosted by the multi-tenant datastore;

generating with a computer hardware processor a query based on the request to access the multi-tenant datastore, wherein generating the query comprises deriving a query scope based on the request, and wherein the query scope is limited to data in the multi-tenant datastore that is associated with the one of the multiple applications, the one of the multiple users, and the one of the multiple tenants;

receiving an updated application token and an updated user token after a predetermined interval of time has passed; and

generating a second query to access the multi-tenant datastore, wherein the second query is based on the updated application token, the updated user token, and the tenant identifier,

wherein the multi-tenant datastore supports a plurality of third party applications,

wherein the third party applications comprise a product recommendation engine and a shipping label printing application, and

wherein functions within the product recommendation engine and the shipping label printing application that are available to a user are determined based upon the query scope.

6. The method of claim 5 , wherein the request is sent from one of the plurality of third party applications and received by the computer hardware processor via an application programming interface (API), wherein the application token comprises a function identification variable (FID) and a shared secret, and wherein the one of the plurality of third party applications is configured to call an API of a social networking site to extract personal preferences of the user.

7. The method of claim 6 , wherein the request further comprises a uniform resource locator (URL), wherein deriving the query scope is further based on the URL, wherein each one of the multiple users of the multi-tenant datastore has a unique user token, wherein each unique user token is associated with one of a plurality of roles, and wherein the plurality of roles comprises owner, administrator, employee, and contractor.

8. The method of claim 6 , wherein the user token comprises a username and a password, and wherein the multi-tenant datastore comprises a relational datastore, wherein the relational datastore is managed by structured query language (SQL) designed for managing data in a relational database management system (RDBMS).

9. An apparatus comprising:

a multi-tenant datastore; and

a web server comprising a hardware processor coupled to the multi-tenant datastore, wherein the web server is configured to:

receive a request comprising an application token, a user token, and a tenant identifier, wherein the application token identifies one of multiple applications hosted by the multi-tenant datastore, wherein the user token identifies one of multiple users of the multi-tenant datastore, and wherein the tenant identifier identifies one of multiple tenants hosted by the multi-tenant datastore;

determine validity of the application token and the user token;

generate a query based on the request to access the multi-tenant datastore when the application token and the user token are valid, wherein generating the query comprises deriving a query scope based on the request, and wherein the query scope is limited to data in the multi-tenant datastore that is associated with the one of the multiple applications, the one of the multiple users, and the one of the multiple tenants;

generate an error message when one or both of the application token and the user token are invalid;

receive an updated application token and an updated user token after a predetermined interval of time has passed; and

generate a second query to access the multi-tenant datastore, wherein the second query is based on the updated application token, the updated user token, and the tenant identifier,

wherein the multi-tenant datastore supports a plurality of third party applications,

wherein the request is sent from one of the plurality of third party applications and received by a computer hardware processor via an application programming interface (API),

wherein the application token comprises encrypted information of an application identification (ID), and

wherein the third party applications determine functions available to a user based on a role of the user specified by the user token.

10. An apparatus comprising:

a multi-tenant datastore; and

a web server comprising a hardware processor coupled to the multi-tenant datastore, wherein the web server is configured to:

receive a request comprising an application token, a user token, and a tenant identifier, wherein the application token identifies one of multiple applications hosted by the multi-tenant datastore, wherein the user token identifies one of multiple users of the multi-tenant datastore, and wherein the tenant identifier identifies one of multiple tenants hosted by the multi-tenant datastore;

determine validity of the application token and the user token;

generate a query based on the request to access the multi-tenant datastore when the application token and the user token are valid, wherein generating the query comprises deriving a query scope based on the request, and wherein the query scope is limited to data in the multi-tenant datastore that is associated with the one of the multiple applications, the one of the multiple users, and the one of the multiple tenants;

generate an error message when one or both of the application token and the user token are invalid;

receive an updated application token and an updated user token after a predetermined interval of time has passed; and

generate a second query to access the multi-tenant datastore, wherein the second query is based on the updated application token, the updated user token, and the tenant identifier,

wherein the request further comprises a uniform resource locator (URL),

wherein deriving the query scope comprises determining the tenant identifier based on the URL,

wherein the application token comprises an application identification (ID), and

wherein the application ID is negotiated between a third party application associated with the application token and a hosting system.

11. The apparatus of claim 10 , wherein the user token comprises encrypted information of a user identifier, wherein the web server receives multiple requests, and wherein each one of the multiple requests comprises an application token, a user token, and a tenant identifier in a header of the multiple requests.

Assignments (5)
CHANGE OF NAME Recorded Mar 28, 2018
From: VOLUSION, INC.
To: VOLUSION, LLC
Reel/Frame 045760/0392 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Nov 23, 2016
From: VOLUSION, LLC
To: MAIN STREET CAPITAL CORPORATION
Reel/Frame 040680/0529 →
SECURITY AGREEMENT Recorded Dec 31, 2013
From: VOLUSION, INC.
To: SILICON VALLEY BANK
Reel/Frame 031893/0001 →
SECURITY AGREEMENT Recorded Dec 30, 2013
From: VOLUSION, INC.
To: SILICON VALLEY BANK
Reel/Frame 031891/0144 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2012
From: WALLIS, JASON; GILL, JONATHAN; MURRAY, GREGORY; HAYES, ROB
To: VOLUSION, INC.
Reel/Frame 029206/0852 →
Continuity (1)
Related Publication 20140096221A1 · Apr 3, 2014