Embodiments of the subject matter described herein generally relate to an on-demand computing environment, such as a multi-tenant database system. More particularly, exemplary embodiments relate to systems and methods for administrating access in an on-demand computing environment.
Modern software development is evolving away from the client-server model toward network-based processing systems that provide access to data and services via the Internet or other networks. In contrast to traditional systems that host networked applications on dedicated server hardware, a “cloud” computing model allows applications to be provided over the network “as a service” supplied by an infrastructure provider. The infrastructure provider typically abstracts the underlying hardware and other resources used to deliver a customer-developed application so that the customer no longer needs to operate and support dedicated server hardware. The cloud computing model can often provide substantial cost savings to the customer over the life of the application because the customer no longer needs to provide dedicated network infrastructure, electrical and temperature controls, physical security and other logistics in support of dedicated server hardware.
Multi-tenant cloud-based architectures have been developed to improve collaboration, integration, and community-based cooperation between customer tenants without sacrificing data security. Generally speaking, multi-tenancy refers to a system wherein a single hardware and software platform simultaneously supports multiple user groups (also referred to as “organizations” or “tenants”) from a common data store. The multi-tenant design provides a number of advantages over conventional server virtualization systems. The multi-tenant platform operator may make improvements to the platform based upon collective information from the entire tenant community, as well as improving collaboration and integration between applications and the data managed by the various applications. The multi-tenant architecture therefore allows convenient and cost effective sharing of similar application features between multiple sets of users.
In certain situations, it may be necessary or desirable to grant access to secure or protected data. If the “owner” of the protected data resources seeks access, then user credentials may be used (e.g., a username and password). If a “non-owner” of the protected data resources seeks access, then the non-owner may use the owner's credentials to gain access. Alternatively, authorization or authentication techniques or protocols may be employed to provide regulated access to the non-owner. For example, the OAuth authorization protocol may be used such that the owner's credentials need not be disclosed to the non-owner. In this regard, the OAuth authorization protocol calls for the use of access tokens that enable non-owners to access protected data resources without knowledge of the owner's credentials. The scope, duration, and amount of data access enabled by an access token may be configured and controlled as needed to limit, restrict, and/or prevent access to certain data. Unfortunately, the OAuth authorization protocol assumes that the end user is the owner of the data, and as such, only the end user may authorize access. However, if the end user is a member of an organization, the organization may want to place restrictions on, or otherwise administer access to, the protected data.
Accordingly, it is desirable to provide systems and methods for administrating access in an on-demand environment, particularly an environment that uses an OAuth authorization protocol. Furthermore, other desirable features and characteristics will become apparent from the subsequent detailed description and the appended claims, taken in conjunction with the accompanying drawings and the foregoing technical field and background.
A more complete understanding of the subject matter may be derived by referring to the detailed description and claims when considered in conjunction with the following figures, wherein like reference numbers refer to similar elements throughout the figures.
Broadly, exemplary embodiments discussed herein provide improved systems and methods for the storage, management, and administration of protected data resources in an on-demand environment, particularly an environment that uses an OAuth authorization protocol. In one exemplary embodiment, the authorization module manages protected data resources stored in a resource server. The authorization module may provide administration capabilities to an administrator. The administrator may use the administration capabilities to establish access protocols associated with the protected data resources. As such, when an end user requests authentication and authorizes a client module to access the protected data resources, the authorization module reviews the access protocols prior to authorization. As such, an administrator may manage access to the protected data resources instead of relying upon end-user authorization. Upon authorization, the authorization module sends an access token to the client module to access the protected data resources from the resource server.
In general, the resource server 130 is suitably designed to host the protected data resources. As such, the resource server 130 may include a database 132 to store the protected data resources. The client module 110 may attempt to access the protected data resources in the resource server 130 on behalf of the user via the user device 102. In general, the authorization module 120 may function to manage access to the protected data resources in the resource server 130, for example, by authenticating users and granting access tokens to the client module 110 for accessing the protected data resources, as requested by the user and/or authorized by the organization. As such, an administrator of the system 100 may define access restrictions via administration capabilities of the administrator device 104 that may be stored as access protocols 122. The access protocols 122 may be in any suitable form, such as a data table, that defines rights, privileges, and capabilities associated with the protected data resources.
Accordingly, during operation, the client module 110, in response to a service request from the user device 102, requests access and authentication from the authorization module 120. If the credentials of the user are confirmed and the user is authorized to access the protected data resources according to the access protocols 122, the authorization module 120 issues an access token, which the client module 110 may use to access the data from the resource server 130. As such, the administrator may efficiently manage access to the protected data resources via the access protocols 122.
As noted above, the authorization module 120 and resource server 130 may function as set forth in an authorization protocol to provide access to protected data. In one exemplary embodiment, the authorization protocol is an OAuth 2.0 authorization protocol, generally referenced below as an “OAuth authorization protocol.” An example of the OAuth 2.0 authorization protocol may be obtained from, for example, the Internet Engineering Task Force (IETF) and is hereby incorporated by reference.
In general, OAuth authorization protocol enables clients (e.g., client module 110) to access server resources (e.g., in resource server 130) on behalf of a user (e.g., at user device 102) associated with the resource owner (e.g., administrator device 104). As such, the client module 110, the authorization module 120, and the resource server 130 may utilize access tokens that define data access rights, privileges, or capabilities. In particular, the resource server 130 may generate access tokens that define these data access attributes. In this context, the client module 110 may access to protected data without directly using the credentials (e.g., username and password) of the end user.
As used in this description, an “access token” is digital data that represents an authorization issued to an entity, application, module, or element that seeks access to protected data, to access system features, to access system functionality, and the like. Depending upon the particular application, system environment, or context, any of the following terms could be used interchangeably with “access token”: “session,” “UI session,” or “session key.” For simplicity, the following description consistently refers to “access token” rather than any of these alternate terms.
In practice, an access token can be realized as a string of bits that defines or otherwise indicates, without limitation: a scope of data access granted to the token holder; a duration of data access granted to the token holder; data access capabilities granted to the token holder; and/or particular system features or functionality accessible to the token holder. The data access attributes associated with an access token may be designated and granted by the owner of the protected resources. Moreover, access tokens may be processed by the client module 110, the authorization module 120, and the resource server 130 as needed to implement the desired data protection schemes. In this regard, the data access attributes corresponding to an access token may be static and fixed, or they may be dynamic and responsive to certain authorization rules or protocols employed by the system. For example, the data access attributes associated with a particular access token may vary in accordance with the date, time, user identity, user classification, system status, system condition, or the like. Additional details about the interaction between the client module 110, the authorization module 120, and the resource server 130 will now be provided.
In accordance with the exemplary embodiment shown in
In accordance with the exemplary embodiment shown in
In response and as indicated by data flows 304 and 306, the client module 110 redirects the user device 102 to the authorization module 120. The redirect exchange may include an identifier associated with the client module 110.
As indicated by data flow 308, the authorization module 120 authenticates the user, for example, by requesting and receiving user credentials. The credentials may include a username and password requested by the authorization module 120 from the user device 102. In some exemplary embodiments, the authorization module 120 requests confirmation from the user via the user device 102 that the user is attempting to grant the client module 110 access to the protected data resources. In this manner and in accordance with the OAuth protocol, the client module 110 does not receive the user credentials.
The authorization module 120 additionally evaluates the user and the data request in view of the access protocols 122 stored in the authorization module 120. As noted above, the access protocols 122 are generally a set of conditions or policy restrictions for accessing the protected data resources, such as a list of users or groups of users that may access the protected data resources. For example, the authorization module 120 may determine that the access protocols 122 restrict all access to the protected data resources. In such situations, the authorization module 120 informs the user device 102 that the requested data resources are inaccessible by the user. Similarly, the authorization module 120 may determine that the protected data resources are only accessible to certain users. As such, the authorization module 120 compares the user credentials to the list of acceptable users. If the user is not acceptable, the authorization module 120 informs the client module 110 and the user device 102 that the requested data resources are inaccessible to the user. However, if the user satisfies the access protocols 122, the authorization module 120 authorizes the user. In this manner, the access protocols 122 dictate access to the restricted data resources instead of the user. In conventional systems that utilize OAuth authorization protocols, the user provides authorization for the client module to access the protected data resources.
As indicated by data flows 310 and 312, upon authorization, the authorization module 120 sends an authorization code to the user device 102 and redirects the user device 102 to the client module 110. The client module 110 extracts the authorization code and sends a token request to the authorization module 120, as indicated by data flow 314.
In response, the authorization module 120 generates an access token based on the token request and the authorization code and provides the access token to the client module 110, as indicated by data flow 316. As noted above, the access token indicates to the resource server 130 that the client module 110 has access to the protected data resources. The access token may also indicate the limitations of that access, such as duration.
As indicated by data flows 318 and 320, the client module 110 then sends a data request to the resource server 130 with the access token, and in turn, the resource server 130 sends the client module 110 the requested data based on the access token. In general, the client module 110 may send additional data requests within the scope of the access token until the access token expires. The client 110 may then use the data as authorized by the user.
It should be appreciated that the process 400 may include any number of additional or alternative tasks, the tasks shown in
For this particular embodiment, certain tasks of the process 400 are performed by an administrator device, such as the administrator device 104 discussed above, while other tasks are performed by an authorization module, such as the authorization module 120 discussed above. Accordingly, the left side of
The process 400 assumes that the administrator device 104 desires to manage or otherwise regulate access to protected data resources. To this end, the administrator device 104 may generate and send a suitable formatted populated administration request, as indicated by step 402. In certain embodiments, the administration request also includes or is generated with credentials of the administrator that facilitate authentication of the administrator device 104.
In steps 404 and 406, the authorization module 120 receives the administration request and evaluates the administrator credentials. In step 406, if the administration request is denied, the authorization module 120 terminates the process, as indicated by step 408. However, if the administration request is accepted, the authorization module 120 generates and sends a response, including access to administration capabilities, as indicated by step 410. For example, the authorization module 120 may provide an installation location to the administrator device 104. The installation location may be, for example, a URL reference for a program stored on the authorization module 120.
In steps 412 and 414, the administrator device 104 receives and installs the administration capabilities. In steps 416 and 418, the administrator generates the access protocols using the administration capabilities and sends the access protocols to the authorization module 120. In steps 420 and 422, the authorization module 120 receives and stores the policy controls as access protocols 122.
It should be appreciated that the process 500 may include any number of additional or alternative tasks, the tasks shown in
For this particular embodiment, certain tasks of the process 500 are performed by a client module, such as the client module 110 discussed above, while other tasks are performed by an authorization module, such as the authorization module 120 discussed above. Accordingly, the left side of
The process 500 assumes that the client module 110 received an access or service request from a user device, such as user device 102, to access a portion of the protected data resources. In step 502, the client module 110 generates and sends an authorization request to the authorization module 120.
In steps 504 and 506, the authorization module 120 receives the request and redirects the user device 102. In step 510, the authorization module 120 receives and evaluates the credentials of the client module 110. In step 506, if the authorization request is denied, the authorization module 120 terminates the process, as indicated by step 512.
Assuming the credentials of the user are authenticated, in step 514, the authorization module 120 evaluates the user and the data request in view of the access protocols 122 stored in the authorization module 120. If the authorization module 120 determines that the access protocols 122 restrict the user from accessing the requested data, the authorization module 120 terminates the process 500, as indicated by step 516. However, if the access protocols 122 indicate that the user has access to the protected data resources, the authorization module 120 generates and sends an authorization code, which is provided to the client module 110, as indicated by steps 518 and 520.
In steps 522 and 524, the client module 110 receives and extracts the authorization code, and in step 526, the client module 110 requests an access token from the authorization module 120. In steps 528, 530, and 532, the authorization module 120 receives the token request, generates the access token, and sends the access token to the client module 110. In steps 534 and 536, the client module 110 receives the access token and subsequently accesses the requested data from the resource server 130 with the access token.
In some exemplary embodiments, the systems and methods described above may be implemented in a multi-tenant application system, such as the multi-tenant application system 600 illustrated in
A “tenant” or “organization” generally refers to a group of users that shares access to common data within database 630. Tenants may represent customers, customer departments, business or legal organizations, and/or any other entities that maintain data for particular sets of users within system 600. Using the examples above, a tenant may be a group that enables end users to access protected data resources via a client module. Although multiple tenants may share access to a common server 602 and database 630, the particular data and services provided from server 602 to each tenant can be securely isolated from those provided to other tenants, as described more fully below. The multi-tenant architecture therefore allows different sets of users to share functionality without necessarily sharing each other's data 632.
Database 630 is any sort of repository or other data storage system capable of storing and managing data 632 associated with any number of tenants. Database 630 may be implemented using any type of conventional database server hardware. In various embodiments, database 630 shares processing hardware 604 with server 602. In other embodiments, database 630 is implemented using separate physical and/or virtual database server hardware that communicates with server 602 to perform the various functions described herein.
Data 632 may be organized and formatted in any manner to support multi-tenant application platform 610. In various embodiments, data 632 is suitably organized into a relatively small number of large data tables to maintain a semi-amorphous “heap”—type format. Data 632 can then be organized as needed for a particular virtual application 628A-B. In various embodiments, conventional data relationships are established using any number of pivot tables 634 that establish indexing, uniqueness, relationships between entities, and/or other aspects of conventional database organization as desired.
Further data manipulation and report formatting is generally performed at run-time using a variety of meta-data constructs. Metadata within a universal data directory (UDD) 636, for example, can be used to describe any number of forms, reports, workflows, user access privileges, business logic and other constructs that are common to multiple tenants. Tenant-specific formatting, functions and other constructs may be maintained as tenant-specific metadata 638A-B for each tenant, as desired. Rather than forcing data 632 into an inflexible global structure that is common to all tenants and applications, then, database 630 is organized to be relatively amorphous, with tables 634 and metadata 636-638 providing additional structure on an as-needed basis. To that end, application platform 610 suitably uses tables 634 and/or metadata 636, 638 to generate “virtual” components of applications 628A-B to logically obtain, process, and present the relatively amorphous data 632 from database 630.
Server 602 is implemented using one or more actual and/or virtual computing systems that collectively provide a dynamic application platform 610 for generating virtual applications 628A-B. Server 602 operates with any sort of conventional computing hardware 604, such as any processor 605, memory 606, input/output features 607 and the like. Processor 605 may be implemented using one or more of microprocessors, microcontrol modules, processing cores and/or other computing resources spread across any number of distributed or integrated systems, including any number of “cloud-based” or other virtual systems. Memory 606 represents any non-transitory short or long term storage capable of storing programming instructions for execution on processor 605, including any sort of random access memory (RAM), read only memory (ROM), flash memory, magnetic or optical mass storage, and/or the like. Input/output features 607 represent conventional interfaces to networks (e.g., to network 645, or any other local area, wide area or other network), mass storage, display devices, data entry devices and/or the like. In a typical embodiment, application platform 610 gains access to processing resources, communications interfaces and other features of hardware 604 using any sort of conventional or proprietary operating system 608. As noted above, server 602 may be implemented using a cluster of actual and/or virtual servers operating in conjunction with each other, typically in association with conventional network communications, cluster management, load balancing and other features as appropriate.
Application platform 610 is any sort of software application or other data processing engine that generates virtual applications 628A-B that provide data and/or services to client devices 640A-B. Virtual applications 628A-B are typically generated at run-time in response to queries received from client devices 640A-B, as described more fully below. In the example illustrated in
Runtime application generator 620 dynamically builds and executes virtual applications 628A-B in response to specific requests received from client devices 640A-B. Virtual applications 628A-B created by tenants are typically constructed in accordance with tenant-specific metadata 638, which describes the particular tables, reports, interfaces and/or other features of the particular application. In various embodiments, each virtual application 628A-B generates dynamic web content that can be served to a browser or other client program 642A-B associated with client device 640A-B, as appropriate. Data processing engine 612 performs bulk processing operations on data 632 such as uploads or downloads, updates, online transaction processing and/or the like.
In operation, then, developers use application platform 610 to create data-driven virtual applications 628A-B for the tenants that they support. Such applications 628A-B may make use of interface features such as tenant-specific screens 624, universal screens 622 or the like. Any number of tenant-specific and/or universal objects 626 may also be available for integration into tenant-developed applications 628A-B. Data 632 associated with each application 628A-B is provided to database 630, as appropriate, and stored until requested, along with metadata 638 that describes the particular features (e.g., reports, tables, functions, etc.) of tenant-specific application 628A-B until needed.
Data and services provided by server 602 can be retrieved using any sort of personal computer, mobile telephone, tablet or other network-enabled client device 640 on network 645. Typically, the user operates a conventional browser or other client program 642 to contact server 602 via network 645 using, for example, the hypertext transport protocol (HTTP) or the like. The user typically authenticates his or her identity to the server 602 to obtain a session identification (“SessionID”) that identifies the user in subsequent communications with server 602. When the identified user requests access to a virtual application 628, application generator 620 suitably creates the application at run time based upon metadata 636 and 638, as appropriate. Query generator 614 suitably obtains the requested data 632 from database 630 as needed to populate the tables, reports or other features of virtual application 628. As noted above, the virtual application 628 may contain Java, ActiveX or other content that can be presented using conventional client software 642 running on client device 640; other embodiments may simply provide dynamic web or other content that can be presented and viewed by the user, as desired
Generally speaking, the various functions and features described above may be carried out with any sort of hardware, software and/or firmware logic that is stored and/or executed on any platform. Some or all aspects of exemplary embodiments may be carried out, for example, by logic executing within platform 610 in
Techniques and technologies may be described herein in terms of functional and/or logical block components, and with reference to symbolic representations of operations, processing tasks, and functions that may be performed by various computing components or devices. Such operations, tasks, and functions are sometimes referred to as being computer-executed, computerized, software-implemented, or computer-implemented. In practice, one or more processor devices can carry out the described operations, tasks, and functions by manipulating electrical signals representing data bits at memory locations in the system memory, as well as other processing of signals. The memory locations where data bits are maintained are physical locations that have particular electrical, magnetic, optical, or organic properties corresponding to the data bits. It should be appreciated that the various block components shown in the figures may be realized by any number of hardware, software, and/or firmware components configured to perform the specified functions. For example, an embodiment of a system or a component may employ various integrated circuit components, e.g., memory elements, digital signal processing elements, logic elements, look-up tables, or the like, which may carry out a variety of functions under the control of one or more microprocessors or other control devices.
When implemented in software or firmware, various elements of the systems described herein are essentially the code segments or instructions that perform the various tasks. The program or code segments can be stored in a processor-readable medium or transmitted by a computer data signal embodied in a carrier wave over a transmission medium or communication path. The “processor-readable medium” or “machine-readable medium” may include any medium that can store or transfer information. Examples of the processor-readable medium include an electronic circuit, a semiconductor memory device, a ROM, a flash memory, an erasable ROM (EROM), a floppy diskette, a CD-ROM, an optical disk, a hard disk, a fiber optic medium, a radio frequency (RF) link, or the like. The computer data signal may include any signal that can propagate over a transmission medium such as electronic network channels, optical fibers, air, electromagnetic paths, or RF links. The code segments may be downloaded via computer networks such as the Internet, an intranet, a LAN, or the like.
The following description refers to elements or nodes or features being “connected” or “coupled” together. As used herein, unless expressly stated otherwise, “coupled” means that one element/node/feature is directly or indirectly joined to (or directly or indirectly communicates with) another element/node/feature, and not necessarily mechanically. Likewise, unless expressly stated otherwise, “connected” means that one element/node/feature is directly joined to (or directly communicates with) another element/node/feature, and not necessarily mechanically. Thus, although the schematic shown in
For the sake of brevity, conventional techniques related to signal processing, data transmission, signaling, network control, and other functional aspects of the systems (and the individual operating components of the systems) may not be described in detail herein. Furthermore, the connecting lines shown in the various figures contained herein are intended to represent exemplary functional relationships and/or physical couplings between the various elements. It should be noted that many alternative or additional functional relationships or physical connections may be present in an embodiment of the subject matter.
The foregoing detailed description is merely illustrative in nature and is not intended to limit the embodiments of the subject matter or the application and uses of such embodiments. As used herein, the word “exemplary” means “serving as an example, instance, or illustration.” Any implementation described herein as exemplary is not necessarily to be construed as preferred or advantageous over other implementations.
While at least one exemplary embodiment has been presented in the foregoing detailed description, it should be appreciated that a vast number of variations exist. It should also be appreciated that the exemplary embodiment or embodiments described herein are not intended to limit the scope, applicability, or configuration of the claimed subject matter in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing the described embodiment or embodiments. It should be understood that various changes can be made in the function and arrangement of elements without departing from the scope defined by the claims, which includes known equivalents and foreseeable equivalents at the time of filing this patent application.
This application claims the benefit of U.S. provisional patent application Ser. No. 61/649,540, filed May 21, 2012.
Number | Name | Date | Kind |
---|---|---|---|
5577188 | Zhu | Nov 1996 | A |
5608872 | Schwartz et al. | Mar 1997 | A |
5649104 | Carleton et al. | Jul 1997 | A |
5715450 | Ambrose et al. | Feb 1998 | A |
5761419 | Schwartz et al. | Jun 1998 | A |
5819038 | Carleton et al. | Oct 1998 | A |
5821937 | Tonelli et al. | Oct 1998 | A |
5831610 | Tonelli et al. | Nov 1998 | A |
5873096 | Lim et al. | Feb 1999 | A |
5918159 | Fomukong et al. | Jun 1999 | A |
5963953 | Cram et al. | Oct 1999 | A |
6092083 | Brodersen et al. | Jul 2000 | A |
6161149 | Achacoso et al. | Dec 2000 | A |
6169534 | Raffel et al. | Jan 2001 | B1 |
6178425 | Brodersen et al. | Jan 2001 | B1 |
6189011 | Lim et al. | Feb 2001 | B1 |
6216135 | Brodersen et al. | Apr 2001 | B1 |
6233617 | Rothwein et al. | May 2001 | B1 |
6266669 | Brodersen et al. | Jul 2001 | B1 |
6295530 | Ritchie et al. | Sep 2001 | B1 |
6324568 | Diec et al. | Nov 2001 | B1 |
6324693 | Brodersen et al. | Nov 2001 | B1 |
6336137 | Lee et al. | Jan 2002 | B1 |
D454139 | Feldcamp et al. | Mar 2002 | S |
6367077 | Brodersen et al. | Apr 2002 | B1 |
6393605 | Loomans | May 2002 | B1 |
6405220 | Brodersen et al. | Jun 2002 | B1 |
6434550 | Warner et al. | Aug 2002 | B1 |
6446089 | Brodersen et al. | Sep 2002 | B1 |
6535909 | Rust | Mar 2003 | B1 |
6549908 | Loomans | Apr 2003 | B1 |
6553563 | Ambrose et al. | Apr 2003 | B2 |
6560461 | Fomukong et al. | May 2003 | B1 |
6574635 | Stauber et al. | Jun 2003 | B2 |
6577726 | Huang et al. | Jun 2003 | B1 |
6601087 | Zhu et al. | Jul 2003 | B1 |
6604117 | Lim et al. | Aug 2003 | B2 |
6604128 | Diec | Aug 2003 | B2 |
6609150 | Lee et al. | Aug 2003 | B2 |
6621834 | Scherpbier et al. | Sep 2003 | B1 |
6654032 | Zhu et al. | Nov 2003 | B1 |
6665648 | Brodersen et al. | Dec 2003 | B2 |
6665655 | Warner et al. | Dec 2003 | B1 |
6684438 | Brodersen et al. | Feb 2004 | B2 |
6711565 | Subramaniam et al. | Mar 2004 | B1 |
6724399 | Katchour et al. | Apr 2004 | B1 |
6728702 | Subramaniam et al. | Apr 2004 | B1 |
6728960 | Loomans et al. | Apr 2004 | B1 |
6732095 | Warshavsky et al. | May 2004 | B1 |
6732100 | Brodersen et al. | May 2004 | B1 |
6732111 | Brodersen et al. | May 2004 | B2 |
6754681 | Brodersen et al. | Jun 2004 | B2 |
6763351 | Subramaniam et al. | Jul 2004 | B1 |
6763501 | Zhu et al. | Jul 2004 | B1 |
6768904 | Kim | Jul 2004 | B2 |
6772229 | Achacoso et al. | Aug 2004 | B1 |
6782383 | Subramaniam et al. | Aug 2004 | B2 |
6804330 | Jones et al. | Oct 2004 | B1 |
6826565 | Ritchie et al. | Nov 2004 | B2 |
6826582 | Chatterjee et al. | Nov 2004 | B1 |
6826745 | Coker | Nov 2004 | B2 |
6829655 | Huang et al. | Dec 2004 | B1 |
6842748 | Warner et al. | Jan 2005 | B1 |
6850895 | Brodersen et al. | Feb 2005 | B2 |
6850949 | Warner et al. | Feb 2005 | B2 |
7062502 | Kesler | Jun 2006 | B1 |
7069231 | Cinarkaya et al. | Jun 2006 | B1 |
7181758 | Chan | Feb 2007 | B1 |
7289976 | Kihneman et al. | Oct 2007 | B2 |
7340411 | Cook | Mar 2008 | B2 |
7356482 | Frankland et al. | Apr 2008 | B2 |
7401094 | Kesler | Jul 2008 | B1 |
7412455 | Dillon | Aug 2008 | B2 |
7508789 | Chan | Mar 2009 | B2 |
7620655 | Larsson et al. | Nov 2009 | B2 |
7698160 | Beaven et al. | Apr 2010 | B2 |
7779475 | Jakobson et al. | Aug 2010 | B2 |
8014943 | Jakobson | Sep 2011 | B2 |
8015495 | Achacoso et al. | Sep 2011 | B2 |
8032297 | Jakobson | Oct 2011 | B2 |
8082301 | Ahlgren et al. | Dec 2011 | B2 |
8095413 | Beaven | Jan 2012 | B1 |
8095594 | Beaven et al. | Jan 2012 | B2 |
8209308 | Rueben et al. | Jun 2012 | B2 |
8275836 | Beaven et al. | Sep 2012 | B2 |
8457545 | Chan | Jun 2013 | B2 |
8484111 | Frankland et al. | Jul 2013 | B2 |
8490025 | Jakobson et al. | Jul 2013 | B2 |
8504945 | Jakobson et al. | Aug 2013 | B2 |
8510045 | Rueben et al. | Aug 2013 | B2 |
8510664 | Rueben et al. | Aug 2013 | B2 |
8566301 | Rueben et al. | Oct 2013 | B2 |
8646103 | Jakobson et al. | Feb 2014 | B2 |
20010044791 | Richter et al. | Nov 2001 | A1 |
20020072951 | Lee et al. | Jun 2002 | A1 |
20020082892 | Raffel | Jun 2002 | A1 |
20020129352 | Brodersen et al. | Sep 2002 | A1 |
20020140731 | Subramanian et al. | Oct 2002 | A1 |
20020143997 | Huang et al. | Oct 2002 | A1 |
20020162090 | Parnell et al. | Oct 2002 | A1 |
20020165742 | Robbins | Nov 2002 | A1 |
20030004971 | Gong | Jan 2003 | A1 |
20030018705 | Chen et al. | Jan 2003 | A1 |
20030018830 | Chen et al. | Jan 2003 | A1 |
20030066031 | Laane et al. | Apr 2003 | A1 |
20030066032 | Ramachandran et al. | Apr 2003 | A1 |
20030069936 | Warner et al. | Apr 2003 | A1 |
20030070000 | Coker et al. | Apr 2003 | A1 |
20030070004 | Mukundan et al. | Apr 2003 | A1 |
20030070005 | Mukundan et al. | Apr 2003 | A1 |
20030074418 | Coker et al. | Apr 2003 | A1 |
20030120675 | Stauber et al. | Jun 2003 | A1 |
20030151633 | George et al. | Aug 2003 | A1 |
20030159136 | Huang et al. | Aug 2003 | A1 |
20030187921 | Diec et al. | Oct 2003 | A1 |
20030189600 | Gune et al. | Oct 2003 | A1 |
20030204427 | Gune et al. | Oct 2003 | A1 |
20030206192 | Chen et al. | Nov 2003 | A1 |
20030225730 | Warner et al. | Dec 2003 | A1 |
20030233583 | Carley | Dec 2003 | A1 |
20040001092 | Rothwein et al. | Jan 2004 | A1 |
20040010489 | Rio et al. | Jan 2004 | A1 |
20040015981 | Coker et al. | Jan 2004 | A1 |
20040024764 | Hsu | Feb 2004 | A1 |
20040027388 | Berg et al. | Feb 2004 | A1 |
20040128001 | Levin et al. | Jul 2004 | A1 |
20040186860 | Lee et al. | Sep 2004 | A1 |
20040193510 | Catahan et al. | Sep 2004 | A1 |
20040199489 | Barnes-Leon et al. | Oct 2004 | A1 |
20040199536 | Barnes Leon et al. | Oct 2004 | A1 |
20040199543 | Braud et al. | Oct 2004 | A1 |
20040249854 | Barnes-Leon et al. | Dec 2004 | A1 |
20040260534 | Pak et al. | Dec 2004 | A1 |
20040260659 | Chan et al. | Dec 2004 | A1 |
20040268299 | Lei et al. | Dec 2004 | A1 |
20050050555 | Exley et al. | Mar 2005 | A1 |
20050091098 | Brodersen et al. | Apr 2005 | A1 |
20060021019 | Hinton et al. | Jan 2006 | A1 |
20080072291 | Carley | Mar 2008 | A1 |
20080097998 | Herbach | Apr 2008 | A1 |
20080249972 | Dillon | Oct 2008 | A1 |
20090063414 | White et al. | Mar 2009 | A1 |
20090100342 | Jakobson | Apr 2009 | A1 |
20090177744 | Marlow et al. | Jul 2009 | A1 |
20090217361 | Crandell | Aug 2009 | A1 |
20090222449 | Hom | Sep 2009 | A1 |
20110218958 | Warshavsky et al. | Sep 2011 | A1 |
20110247051 | Bulumulla et al. | Oct 2011 | A1 |
20110307947 | Kariv | Dec 2011 | A1 |
20120011358 | Masone | Jan 2012 | A1 |
20120042218 | Cinarkaya et al. | Feb 2012 | A1 |
20120144202 | Counterman | Jun 2012 | A1 |
20120233137 | Jakobson et al. | Sep 2012 | A1 |
20120240214 | Ogura | Sep 2012 | A1 |
20120311660 | Park et al. | Dec 2012 | A1 |
20130007846 | Murakami | Jan 2013 | A1 |
20130104200 | Choi | Apr 2013 | A1 |
20130139241 | Leeder | May 2013 | A1 |
20130212497 | Zelenko et al. | Aug 2013 | A1 |
20130218948 | Jakobson | Aug 2013 | A1 |
20130218949 | Jakobson | Aug 2013 | A1 |
20130218966 | Jakobson | Aug 2013 | A1 |
20130247216 | Cinarkaya et al. | Sep 2013 | A1 |
20130268680 | Marton | Oct 2013 | A1 |
Entry |
---|
Bottoni et al., Credentials and Beliefs in Remote Trusted Platforms Attestation, © 2006, IEEE, 6 pages. |
David J. Lutz, Secure AAA by means of Identity Tokens in Next Generation Mobile Environments, © 2007, IEEE, 6 pages. |
Fritsch et al., User-Controlled Dynamic Access Credential Enrichment for Run-time Service Selection, © 2012, IEEE, 8 pages. |
Ng et al., Designated Group Credentials, © 2006, ACM, 7 pages. |
Tsang et al., Blacklistable Anonymous Credentials: Blocking Misbehaving Users without TTPs, © 2007, ACM, 10 pages. |
Number | Date | Country | |
---|---|---|---|
20130312068 A1 | Nov 2013 | US |
Number | Date | Country | |
---|---|---|---|
61649540 | May 2012 | US |