US8453217B2 - Securing resource stores with claims-based security - Google Patents

Securing resource stores with claims-based security Download PDF

Info

Publication number
US8453217B2
US8453217B2 US13/287,421 US201113287421A US8453217B2 US 8453217 B2 US8453217 B2 US 8453217B2 US 201113287421 A US201113287421 A US 201113287421A US 8453217 B2 US8453217 B2 US 8453217B2
Authority
US
United States
Prior art keywords
resource
session
store
resources
act
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US13/287,421
Other versions
US20120047561A1 (en
Inventor
Anthony Christopher Bloesch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to US13/287,421 priority Critical patent/US8453217B2/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BLOESCH, ANTHONY CHRISTOPHER
Publication of US20120047561A1 publication Critical patent/US20120047561A1/en
Application granted granted Critical
Publication of US8453217B2 publication Critical patent/US8453217B2/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Definitions

  • Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing environments.
  • tasks e.g., word processing, scheduling, accounting, etc.
  • a passport can be used at immigration desk to establish identity as a citizen of a particular country.
  • a driver's license can be used during a traffic stop to establish identity as a licensed driver.
  • a passport typically can not be used to establish identity as a licensed driver and a driver's license typically can not be used to establish citizenship.
  • Digital identities are often authenticated by submitting a user ID and password. If the password matches that assigned to the user ID, a submitting entity is authenticated. Based on the authentication, the submitting entity may be permitted to perform any operations (access content, edit files, mange a server, etc.) that are authorized for the user ID.
  • Authorized operations can be assigned on a per context basis, such as, for example, per organization, etc. That is, for each organization a user can be assigned a user ID and password and can be authorized to perform various operations.
  • ACL Access Control Lists
  • an ACL is a list of permissions attached to an object, such as, for example, a file. The list specifies who or what is allowed to access the object and what operations are allowed to be performed on the object.
  • each entry in the list specifies a subject and an operation: for example, the entry (User1, delete) on the ACL for file XYZ gives User1 permission to delete file XYZ.
  • Typical ACL-based systems assign permissions to individual users, which can become cumbersome in a system with a large number of users.
  • RBAC role-based access control
  • permissions are assigned to roles, and roles are assigned to users.
  • either approach still requires the maintenance of ACLs and a checking infrastructure to verify permissions within ACLs.
  • resources are accessible via a number of different mechanisms, such as, for example, via different types of applications and/or sessions/connections.
  • Protecting resources using a security model based on ACLs each different mechanism used to access a resource would typically be required to implement the security model.
  • data in a database can be protected using a security model based on ACLs.
  • the database may be accessible from a variety of tools, such as, for example, a reporting service, a spreadsheet application, etc. Each of these tools must implement the security model of the database, for example, protocols, credential formats, etc., (essentially flawlessly) to authenticate with the database and obtain access to data in the database.
  • resource access can include efforts to configure applications to match security models of various different resource providers.
  • different organizations control applications and resource providers making coordination of these efforts difficult.
  • these efforts are essentially unmanageable.
  • the present invention extends to methods, systems, and computer program products for securing resource stores with claims based security.
  • a resource store receives policy information for the resource store.
  • the resource store derives permissions for accessing secured resources in the resource store from the received policy information.
  • the permissions define secured operations that can be performed on secured resources in the resource store based on received identity information.
  • the permissions are derived from various policies.
  • the policies can include a secured operations table defining the secured operations that are possible for the resource store.
  • the policies can also include a secured resources table defining the secured resources within the resource store.
  • Each secured resource is a specified resource type, from among a plurality of different resource types.
  • Each of the plurality of different resource types is defined in a secured resource types table.
  • the resource store receives identity information for a session connected to the resource store.
  • the identity information is accumulated from one or more claims submitted to the resource store on behalf of the session.
  • the resource store determines the resource types that the session can access based on the derived permissions and the received identity information.
  • the resource store accesses a metadata table that maps secured resource identifiers to corresponding resource types.
  • the resource store filters the metadata table into a subset of metadata that includes resource identifiers for secured resources of the resource types the session can access.
  • a session is provided access to a secure resource in the resource store.
  • the resource store receives a request over a session connected to the resource store.
  • the request is to perform an operation on secured resources of a specified resource type contained in the resource store.
  • the resource store refers to a claims list for the session.
  • the claims list including claims for the session accumulated from one or more previously received security tokens. Each claim asserts identify information for the session.
  • the resource store refers to a security table at the resources store.
  • the security table contains permissions for accessing secured resources contained in the resource store.
  • the permissions define secured operations that are authorized for secured resources contained in the resource store based on received identity information.
  • the resource store determines from the permissions that the connection is authorized to perform the requested operation on secured resources of the specified resource type based on the accumulated claims contained in the claims list.
  • the resource store performs the requested operation for any secured resources of the specified type contained in the resource store.
  • FIG. 1A illustrates an example computer architecture that facilitates securing resource stores with claims-based security
  • FIG. 1B illustrates an example data flow within the example computer architecture of FIG. 1A for securing resources of a resource store.
  • FIG. 1C illustrates other components of the example computer architecture of FIG. 1A .
  • FIG. 1D illustrates example base-tables for storing claim-based security information.
  • FIG. 2 illustrates a flow chart of an example method for securing a resource store.
  • FIG. 3 illustrates a flow chart of an example method for providing secure access to resources in a resource store.
  • the present invention extends to methods, systems, and computer program products for securing resource stores with claims based security.
  • a resource store receives policy information for the resource store.
  • the resource store derives permissions for accessing secured resources in the resource store from the received policy information.
  • the permissions define secured operations that can be performed on secured resources in the resource store based on received identity information.
  • the policies can include a secured operations table defining the secured operations that are possible for the resource store.
  • the policies can also include a secured resources table defining the secured resources within the resource store.
  • Each secured resource is a specified resource type, from among a plurality of different resource types.
  • Each of the plurality of different resource types is defined in a secured resource types table.
  • the resource store receives identity information for a session connected to the resource store.
  • the identity information is accumulated from one or more claims submitted to the resource store on behalf of the session.
  • the resource store determines the resource types that the session can access based on the derived permissions and the received identity information.
  • the resource store accesses a metadata table that maps secured resource identifiers to corresponding resource types.
  • the resource store filters the metadata table into a subset of metadata that includes resource identifiers for secured resources of the resource types the session can access.
  • a session is provided access to a secure resource in the resource store.
  • the resource store receives a request over a session connected to the resource store.
  • the request is to perform an operation on secured resources of a specified resource type contained in the resource store.
  • the resource store refers to a claims list for the session.
  • the claims list including claims for the session accumulated from one or more previously received security tokens. Each claim asserts identify information for the session.
  • the resource store refers to a security table at the resources store.
  • the security table contains permissions for accessing secured resources contained in the resource store.
  • the permissions define secured operations that are authorized for secured resources contained in the resource store based on received identity information.
  • the resource store determines from the permissions that the connection is authorized to perform the requested operation on secured resources of the specified resource type based on the accumulated claims contained in the claims list.
  • the resource store performs the requested operation for any secured resources of the specified type contained in the resource store.
  • Embodiments of the present invention may comprise or utilize a special purpose or general-purpose computer including computer hardware, as discussed in greater detail below.
  • Embodiments within the scope of the present invention also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures.
  • Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system.
  • Computer-readable media that store computer-executable instructions are physical storage media.
  • Computer-readable media that carry computer-executable instructions are transmission media.
  • embodiments of the invention can comprise at least two distinctly different kinds of computer-readable media: physical storage media and transmission media.
  • Physical storage media includes RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer.
  • a “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules and/or other electronic devices.
  • a network or another communications connection can include a network and/or data links which can be used to carry or desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media.
  • program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission media to physical storage media (or vice versa).
  • program code means in the form of computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., a “NIC”), and then eventually transferred to computer system RAM and/or to less volatile physical storage media at a computer system.
  • a network interface module e.g., a “NIC”
  • NIC network interface module
  • physical storage media can be included in computer system components that also (or even primarily) utilize transmission media.
  • Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions.
  • the computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code.
  • the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, routers, switches, and the like.
  • the invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks.
  • program modules may be located in both local and remote memory storage devices.
  • FIG. 1A illustrates an example computer architecture 100 that facilitates securing resource stores using claims-based security.
  • computer architecture 100 includes client module 102 , identity store 106 , policy store 107 , and repository 101 .
  • client module 102 client module 102
  • identity store 106 identity store 106
  • policy store 107 policy store 107
  • repository 101 repository 101
  • Each of the depicted components can be connected to one another over (or be part of) a network, such as, for example, a Local Area Network (“LAN”), a Wide Area Network (“WAN”), and even the Internet.
  • LAN Local Area Network
  • WAN Wide Area Network
  • each of the depicted components as well as any other connected components can create message related data and exchange message related data (e.g., Internet Protocol (“IP”) datagrams and other higher layer protocols that utilize IP datagrams, such as, Transmission Control Protocol (“TCP”), Hypertext Transfer Protocol (“HTTP”), Simple Mail Transfer Protocol (“SMTP”), etc.) over the network.
  • IP Internet Protocol
  • TCP Transmission Control Protocol
  • HTTP Hypertext Transfer Protocol
  • SMTP Simple Mail Transfer Protocol
  • client module 102 (e.g., an operating system client) includes one or more applications, such as, for example, application 103 A, application 103 B, etc. From time to time, each of the one or more applications can request access to secured resources at repository 101 (e.g., a SQL database). Client module 102 can be configured to establish a session to repository 101 for use by any of the one or more applications. Client 102 is also configured to request and receive claims from identity providers. Upon obtaining claims for an identity provider, client module 102 can submit claims to relying party, such as, for example, repository 101 .
  • relying party such as, for example, repository 101 .
  • Identity store 106 (e.g., active directory (“AD”)) is configured to provide identity information to a client module.
  • identify store 106 can provide an identity token to a requesting client module.
  • the identity token can include one or more claims with respect to the identity of the client module.
  • Policy store 107 is also configured to provide identity information to a client module.
  • policy store 107 can provide a token to a requesting client module.
  • the token can include one or more claims with respect to the identity of the client module.
  • identity store 106 and policy store 107 both include identity provider functionality.
  • Policy store 107 can also be configured to submit policy information to repository 101 .
  • Submitted policy information can include relevant policy information for repository 101 , for example, that administrators have set up for repository 101 using policy administration tools.
  • Repository 101 is configured to receive policy information and derive permissions for securing resources from the received policy information. Alternately, administrators can use stored procedures and updatable views to set permissions for accessing secure resources at repository 101 .
  • Repository 101 can store permissions, whether they are derived or set through procedures and updatable views, in security table 112 .
  • Security processing module 104 can receive claims and accumulate claims for a client module in a claims list. Received claims can correspond to a specified application at a client module or generally to a session or connection between the client module and repository 101 . When claims correspond to a session or connection, security processing module can apply the claims to any application that utilizes the session or connection.
  • Metadata table 111 includes metadata 114 that maps resource identifiers to various metadata.
  • the resource identifiers can identify secured resources in a storage location at repository 101 (or that repository 101 controls access to).
  • Metadata 114 is used in claims-based security processing to determine if an operation request is authorized for a secured resource.
  • Policy store 107 can send policy 108 to repository 101 . From policy 108 , repository 101 can derive permissions 113 . Repository 101 can then store permissions 113 in security table 112 .
  • an application at client module 102 may desire to perform an operation on a secured resource of repository 101 .
  • Client module 102 can send ID token request 121 to identity store 106 .
  • ID token request 121 can include appropriate credentials such that identity store 106 can authenticate client module 102 as the sender of ID token request 121 .
  • Identity store 106 can return ID token 122 to client module 102 in response to receiving token request 121 .
  • ID token 122 can include some claims with respect to the (e.g., basic) identity of client module 102 , such as, for example, an operating system identity and group memberships. More specifically, claim 124 identifies client 102 as a member of the domain “org.com”
  • Client module 102 can submit logon 123 , including ID token 122 , to repository 101 .
  • Security processing module 104 can receive logon 123 and extract claim 124 from ID token 122 .
  • Security processing module 104 can then exchange further data with client module 102 to establish session 109 between client module 102 and repository 101 .
  • Security processing module 104 then establishes claims list 143 for session 143 and inserts claim 124 into claims list 143 .
  • Client module 102 can also request other claims from other identity providers.
  • the application at client module 102 can submit claims request 126 to policy store 107 .
  • Claims request 126 can include appropriate credentials such that policy store can authenticate client module 102 as the sender of claims request 126 .
  • Policy store 107 can return token 127 to client module 102 in response to receiving claims request 126 .
  • Token 127 can include additional claims with respect to the identity of client module 102 , such as, for example, further domain or group memberships. More specifically, claim 128 identifies client 102 as a member of the group “Division A” and claim 129 identifies client 102 as a member of Corporation “Corp 1”.
  • client module 102 can request a nonce from repository 101 .
  • client module 102 can submit nonce request 131 to repository 101 .
  • Security processing module can receive nonce request 131 .
  • security processing module 104 can return nonce 132 to client module 102 .
  • Nonce 132 is used to minimize the possibility of replay attacks when passing claims.
  • Client module 102 can then combine nonce 132 and claims 128 and 129 into claims 133 .
  • Client module 102 can then send claims 133 to repository 101 .
  • Claims 133 can be signed and the signing key can be passed in a (e.g., SAML) token to repository 101 .
  • Security processing module 104 verifies the token and adds claims 128 and 129 to claims list 143
  • FIG. 1B illustrates an example data flow 150 within the example computer architecture of FIG. 1A for securing resources of a resource store.
  • FIG. 2 illustrates a flow chart of an example method 200 for securing a resource store. The method 200 will be described with respect to the data in data flow 150 as well as other components and data of computer architecture 100 .
  • Method 200 includes an act of receiving policy information for a resource store (act 201 ).
  • repository 101 can receive policy 108 .
  • secured resource types 181 , secured resources 182 , and secured operations 191 can each represent a portion of policy 108 .
  • Secured resource types 181 indicates the types of resources, such as, for example, type 181 containers and type 182 container versions, that are that are to be secured at repository 101 .
  • Secured resources 182 indicates specific instances of secured resource types that are to be protected at repository 101 .
  • resource 182 A represents that repository 101 is to secure containers for a programming framework.
  • resource 182 D represents that repository 101 is to secure containers for Corp 1.
  • Resource 182 B represents that repository 101 is to secure version 1.0 of the programming framework.
  • resource 182 C represents that repository 101 is to secure version 2.0 of the programming framework.
  • Secured operations 191 indicate secured operations that can be used at repository 101 .
  • Operation 191 A indicates that secured resources at repository 101 can be read.
  • Operation 191 B indicates that secured resources are repository 101 can be updated.
  • Method 200 includes an act of deriving permissions for accessing secured resources in the resource store from the received policy information (act 202 ).
  • permissions 113 can be derived from policy 108 .
  • the permissions define secured operations that can be performed on secured resources in the resource store based on received identity information.
  • permissions 113 define read and update operations authorized for secured resources of repository 101 based on received identity information.
  • the permissions are derived from a secured operations table defining the secured operations that are possible for the resource store.
  • the permissions are also derived from a secured resources table defining the secured resources within the resource store.
  • Each secured resource is a specified resource type, from among a plurality of different resource types.
  • the permissions are derived from each of the plurality of different resource types defined in a secured resource types table.
  • permissions 113 can be derived from secured resource types 181 , secured resources 182 , and secured operations 191 .
  • Method 200 includes an act of receiving identity information for a session connected to the resource store (act 203 ).
  • repository 101 can receive identity information for session 109 .
  • the identity information is accumulated from one or more claims submitted to the resource store on behalf of the session.
  • claims list 143 includes claims accumulated from ID token 122 and token 127 .
  • Method 200 includes an act of determining the resource types that the session can access based on the derived permissions and the received identity information (act 204 ).
  • repository 101 can determine resource types that session 109 can access based on permissions 113 and claims list 143 .
  • Readable containers 186 represents the containers that session 109 is authorized to read. For example, session 109 is authorized to read resources in Framework 2.0 ( 182 C) and resources in Corp. 1 ( 182 D).
  • Readable container versions 188 represents versions of containers that session 109 is authorized to read. For example, session 109 is authorized to read resources in Framework 2.0 ( 182 C). However, session 109 is not authorized to read resources in Framework 1.0 ( 182 B).
  • Updatable resources 187 represents the resources that session 109 is authorized to update. Based on claims list 143 and permissions 113 , session 109 is not authorized to update any resources. When appropriate, updateable contain versions (similar to readable container versions 188 ) may also result.
  • Method 200 includes an act accessing a metadata table that maps secured resource identifiers to corresponding resource types (act 205 ).
  • repository 101 can access metadata table 111 .
  • Metadata table 111 maps resource identifies to corresponding containers and container versions.
  • Method 200 includes an act of filtering metadata table into a subset of metadata that includes resource identifiers for secured resources of the resource types the session can access (act 206 ).
  • repository 101 can filter metadata table 111 into resources 189 (metadata 114 C, 114 D, and 114 E).
  • Resources 189 includes resource IDs for resources (e.g., assemblies) in the containers and container versions session 109 can access.
  • base tables are used for storing claims-based security information.
  • FIG. 1D illustrates example base-tables for storing claim-based security information. Many of the tables in FIG. 1D correspond to and define the format of data in data flow 150 .
  • SecuredOperationsTable 177 defines the format secured operations 191 .
  • SecuredResourceTypesTable 176 defines the formation for secured resource types 181 .
  • SecuredResourceTable 174 defines the format for secured resources 182 .
  • SecuredResourcePermissonsTable 172 defines the format for security table 112 .
  • PrincipalSecurtyClaimsTable 171 defines the format for claims list 143 .
  • the principal, in PrincipalSecurtyClaimsTable 171 can correspond to a SQL server login SID (i.e., suser_sid( ). Ordinary repository users can be prevented from accessing these tables.
  • SecurityClaimsTypeTable 175 defines the types of claims, such as, for example, an operating system specific, that can be processed.
  • SecurityClaimsTable 173 defines a claim format for claims included in a token.
  • base tables for storing security information can include a normalized structure. For example, security claims can be factored into their own table.
  • adding or removing a container or a container version also adds or removes the corresponding secured resource entries (e.g., in security table 112 ) via associated triggers and referential actions.
  • column level permissions may also be associated with database roles
  • database roles are a flexible way to control the permissions sets of a group of users.
  • a set of helper functions can abstract the tasks of finding and changing permissions sets.
  • Inline table valued functions can be used to provide high performance, highly parallelizable implementations of routines tat return permission sets for individual principals.
  • table valued function based implementations provide for future security model extensions by abstracting away the underlying security implementation.
  • client module 102 can submit operation request 141 to repository 101 .
  • Security processing module 104 can receive operation request 141 .
  • Operation request can be a request to read or update resources of repository 101 .
  • FIG. 1C illustrates other components of repository 101 .
  • security processing module 104 includes authorization module 161 .
  • authorization module 161 can access an operation request from a principal, access a claims list for the principal, access a set of permissions, and access metadata. From the accessed information, authorization module 161 returns an ID for any resource the principal is authorized to perform the operation on.
  • the list of IDs can be passed to data access module 162 .
  • Data access module 162 matches each ID to an identified resource.
  • Data access module 162 then performs the requested operation each identified resource.
  • Data access module 162 can pass the results of the operation (which can include identified resources, for example, for a read operation) to the requesting principal. For example, data access module can return result 142 to client module 102 .
  • FIG. 3 illustrates a flow chart of an example method 300 for providing secure access to resources in a resource store. Method 300 will be described with respect to the components and data in FIGS. 1A and 1C .
  • Method 300 includes an act of receiving a request over a session connected to the resource store, the request to perform an operation on secured resources of a specified resource type contained in the resource store (act 301 ).
  • security processing module 104 can receive operation request 141 over session 109 .
  • Operation request 141 is a request to perform operation 151 Read Framework 2.0 (e.g., stored in storage 163 ).
  • Operation 151 can be forwarded on to authorization module 161 (along with context information identifying session 109 ).
  • Method 300 includes an act of referring to a claims list for the session, the claims list including claims for the connection accumulated from one or more previously received security tokens, each claim asserting identify information for the session (act 302 ).
  • authorization module 161 can refer to claims list 143 for session 109 .
  • Method 300 includes an act of referring to a security table at the resource store, the security table containing permissions for accessing secured resources contained in the resource store, the permissions defining secured operations that are authorized for secured resources contained in the resource store based on received identity information (act 303 ).
  • authorization module 161 can refer to security table 112 .
  • Method 300 includes an act of determining from the permissions that the session is authorized to perform the requested operation on secured resources of the specified resource type based on the accumulated claims contained in the claims list (act 304 ).
  • authorization module 161 can determine form permissions 113 that session 109 is authorized to read resources of container Framework version 2.0.
  • Method 300 includes an act of performing the requested operation for any secured resources of the specified type contained in the resource store (act 305 ).
  • Authorization module 161 can pass authorized data access 192 to data access module 162 .

Abstract

Methods, systems, and computer program products are provided for securing resource stores with claims-based security. From policy information, a resource store populates a security table of permissions. The permissions authorize resource access based on received claims. Sessions submit claims to the resource store. The resource store accumulates claims for a session into a claims list. From the claims list and the security table, the resource store filters out a subset of metadata including resource IDs for resources the session is authorized to access. Since the metadata corresponds to the session, any application using the session is given similar access to resources at the resource store.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 12/112,773 filed on Apr. 30, 2008 and entitled “SECURING RESOURCE STORES WITH CLAIMS-BASED SECURITY,” which application is hereby expressly incorporated herein in its entirety.
BACKGROUND Background and Relevant Art
Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing environments.
In the real world, individuals typically have a variety of different context specific mechanisms for establishing identity, which are not necessarily interchangeable. Different contexts require different identities, each of which are expressed in a different way and provide different information. For example, a passport can be used at immigration desk to establish identity as a citizen of a particular country. Likewise, a driver's license can be used during a traffic stop to establish identity as a licensed driver. However, a passport typically can not be used to establish identity as a licensed driver and a driver's license typically can not be used to establish citizenship.
In network environments, individuals also typically have a variety of context specific mechanisms for establishing a digital identity. Similar to real world identifies, these digital identities are not necessarily interchangeable. Each context can require a different digital identity, which are expressed in a different way and provides different information. Further, digital identities are typical transferred via network communication leading to additional complexities and security concerns.
Digital identities are often authenticated by submitting a user ID and password. If the password matches that assigned to the user ID, a submitting entity is authenticated. Based on the authentication, the submitting entity may be permitted to perform any operations (access content, edit files, mange a server, etc.) that are authorized for the user ID. Authorized operations can be assigned on a per context basis, such as, for example, per organization, etc. That is, for each organization a user can be assigned a user ID and password and can be authorized to perform various operations.
In some environments, permissions to perform operations are controlled using Access Control Lists (“ACL's”). Generally, an ACL is a list of permissions attached to an object, such as, for example, a file. The list specifies who or what is allowed to access the object and what operations are allowed to be performed on the object. In a typical ACL, each entry in the list specifies a subject and an operation: for example, the entry (User1, delete) on the ACL for file XYZ gives User1 permission to delete file XYZ.
Typical ACL-based systems assign permissions to individual users, which can become cumbersome in a system with a large number of users. In other approaches, called role-based access control (“RBAC”), permissions are assigned to roles, and roles are assigned to users. However, either approach still requires the maintenance of ACLs and a checking infrastructure to verify permissions within ACLs.
Further, in some environments resources are accessible via a number of different mechanisms, such as, for example, via different types of applications and/or sessions/connections. Protecting resources using a security model based on ACLs, each different mechanism used to access a resource would typically be required to implement the security model. For example, data in a database can be protected using a security model based on ACLs. Further, the database may be accessible from a variety of tools, such as, for example, a reporting service, a spreadsheet application, etc. Each of these tools must implement the security model of the database, for example, protocols, credential formats, etc., (essentially flawlessly) to authenticate with the database and obtain access to data in the database.
It is also not uncommon for an application to request access to resources from a variety of different providers. Each different provider can implement a different security model, for example, based on ACLs or even using other different types of resource protection. Thus, the application is required to implement the different security model for each different provider to access resources of each different provider. However, depending on network dynamics, intermediate components, available protocols, etc., an application may not necessarily know beforehand what providers it will access. Thus, at the time the application is to be requesting resource access, the application may be required instead to temporarily suspend resource access and configure security settings.
Thus in distributed networking environments, resource access can include efforts to configure applications to match security models of various different resource providers. However, it is often the case that different organizations control applications and resource providers making coordination of these efforts difficult. In some environments, depending on the size of the distributed system (e.g., the Internet), these efforts are essentially unmanageable.
BRIEF SUMMARY
The present invention extends to methods, systems, and computer program products for securing resource stores with claims based security. A resource store receives policy information for the resource store. The resource store derives permissions for accessing secured resources in the resource store from the received policy information. The permissions define secured operations that can be performed on secured resources in the resource store based on received identity information.
The permissions are derived from various policies. The policies can include a secured operations table defining the secured operations that are possible for the resource store. The policies can also include a secured resources table defining the secured resources within the resource store. Each secured resource is a specified resource type, from among a plurality of different resource types. Each of the plurality of different resource types is defined in a secured resource types table.
The resource store receives identity information for a session connected to the resource store. The identity information is accumulated from one or more claims submitted to the resource store on behalf of the session. The resource store determines the resource types that the session can access based on the derived permissions and the received identity information. The resource store accesses a metadata table that maps secured resource identifiers to corresponding resource types. The resource store filters the metadata table into a subset of metadata that includes resource identifiers for secured resources of the resource types the session can access.
In other embodiments, a session is provided access to a secure resource in the resource store. The resource store receives a request over a session connected to the resource store. The request is to perform an operation on secured resources of a specified resource type contained in the resource store. The resource store refers to a claims list for the session. The claims list including claims for the session accumulated from one or more previously received security tokens. Each claim asserts identify information for the session.
The resource store refers to a security table at the resources store. The security table contains permissions for accessing secured resources contained in the resource store. The permissions define secured operations that are authorized for secured resources contained in the resource store based on received identity information.
The resource store determines from the permissions that the connection is authorized to perform the requested operation on secured resources of the specified resource type based on the accumulated claims contained in the claims list. The resource store performs the requested operation for any secured resources of the specified type contained in the resource store.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Additional features and advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of the invention. The features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.
BRIEF DESCRIPTION OF THE DRAWINGS
In order to describe the manner in which the above-recited and other advantages and features of the invention can be obtained, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
FIG. 1A illustrates an example computer architecture that facilitates securing resource stores with claims-based security
FIG. 1B illustrates an example data flow within the example computer architecture of FIG. 1A for securing resources of a resource store.
FIG. 1C illustrates other components of the example computer architecture of FIG. 1A.
FIG. 1D illustrates example base-tables for storing claim-based security information.
FIG. 2 illustrates a flow chart of an example method for securing a resource store.
FIG. 3 illustrates a flow chart of an example method for providing secure access to resources in a resource store.
DETAILED DESCRIPTION
The present invention extends to methods, systems, and computer program products for securing resource stores with claims based security. A resource store receives policy information for the resource store. The resource store derives permissions for accessing secured resources in the resource store from the received policy information. The permissions define secured operations that can be performed on secured resources in the resource store based on received identity information.
The permissions derived from various different policies. The policies can include a secured operations table defining the secured operations that are possible for the resource store. The policies can also include a secured resources table defining the secured resources within the resource store. Each secured resource is a specified resource type, from among a plurality of different resource types. Each of the plurality of different resource types is defined in a secured resource types table.
The resource store receives identity information for a session connected to the resource store. The identity information is accumulated from one or more claims submitted to the resource store on behalf of the session. The resource store determines the resource types that the session can access based on the derived permissions and the received identity information. The resource store accesses a metadata table that maps secured resource identifiers to corresponding resource types. The resource store filters the metadata table into a subset of metadata that includes resource identifiers for secured resources of the resource types the session can access.
In other embodiments, a session is provided access to a secure resource in the resource store. The resource store receives a request over a session connected to the resource store. The request is to perform an operation on secured resources of a specified resource type contained in the resource store. The resource store refers to a claims list for the session. The claims list including claims for the session accumulated from one or more previously received security tokens. Each claim asserts identify information for the session.
The resource store refers to a security table at the resources store. The security table contains permissions for accessing secured resources contained in the resource store. The permissions define secured operations that are authorized for secured resources contained in the resource store based on received identity information.
The resource store determines from the permissions that the connection is authorized to perform the requested operation on secured resources of the specified resource type based on the accumulated claims contained in the claims list. The resource store performs the requested operation for any secured resources of the specified type contained in the resource store.
Embodiments of the present invention may comprise or utilize a special purpose or general-purpose computer including computer hardware, as discussed in greater detail below. Embodiments within the scope of the present invention also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system. Computer-readable media that store computer-executable instructions are physical storage media. Computer-readable media that carry computer-executable instructions are transmission media. Thus, by way of example, and not limitation, embodiments of the invention can comprise at least two distinctly different kinds of computer-readable media: physical storage media and transmission media.
Physical storage media includes RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer.
A “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules and/or other electronic devices. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a transmission medium. Transmissions media can include a network and/or data links which can be used to carry or desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media.
Further, upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission media to physical storage media (or vice versa). For example, computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., a “NIC”), and then eventually transferred to computer system RAM and/or to less volatile physical storage media at a computer system. Thus, it should be understood that physical storage media can be included in computer system components that also (or even primarily) utilize transmission media.
Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts described above. Rather, the described features and acts are disclosed as example forms of implementing the claims.
Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, routers, switches, and the like. The invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices.
FIG. 1A illustrates an example computer architecture 100 that facilitates securing resource stores using claims-based security. Referring to FIG. 1A, computer architecture 100 includes client module 102, identity store 106, policy store 107, and repository 101. Each of the depicted components can be connected to one another over (or be part of) a network, such as, for example, a Local Area Network (“LAN”), a Wide Area Network (“WAN”), and even the Internet. Accordingly, each of the depicted components as well as any other connected components, can create message related data and exchange message related data (e.g., Internet Protocol (“IP”) datagrams and other higher layer protocols that utilize IP datagrams, such as, Transmission Control Protocol (“TCP”), Hypertext Transfer Protocol (“HTTP”), Simple Mail Transfer Protocol (“SMTP”), etc.) over the network.
As depicted in FIG. 1A, client module 102 (e.g., an operating system client) includes one or more applications, such as, for example, application 103A, application 103B, etc. From time to time, each of the one or more applications can request access to secured resources at repository 101 (e.g., a SQL database). Client module 102 can be configured to establish a session to repository 101 for use by any of the one or more applications. Client 102 is also configured to request and receive claims from identity providers. Upon obtaining claims for an identity provider, client module 102 can submit claims to relying party, such as, for example, repository 101.
Identity store 106 (e.g., active directory (“AD”)) is configured to provide identity information to a client module. In response to an appropriate ID token request, such as, for example, valid credentials, identify store 106 can provide an identity token to a requesting client module. The identity token can include one or more claims with respect to the identity of the client module.
Policy store 107 is also configured to provide identity information to a client module. In response to an appropriate claims request, such as, for example, valid credentials, policy store 107 can provide a token to a requesting client module. The token can include one or more claims with respect to the identity of the client module.
Accordingly, identity store 106 and policy store 107 both include identity provider functionality.
Policy store 107 can also be configured to submit policy information to repository 101. Submitted policy information can include relevant policy information for repository 101, for example, that administrators have set up for repository 101 using policy administration tools. Repository 101 is configured to receive policy information and derive permissions for securing resources from the received policy information. Alternately, administrators can use stored procedures and updatable views to set permissions for accessing secure resources at repository 101. Repository 101 can store permissions, whether they are derived or set through procedures and updatable views, in security table 112.
Security processing module 104 can receive claims and accumulate claims for a client module in a claims list. Received claims can correspond to a specified application at a client module or generally to a session or connection between the client module and repository 101. When claims correspond to a session or connection, security processing module can apply the claims to any application that utilizes the session or connection.
Metadata table 111 includes metadata 114 that maps resource identifiers to various metadata. The resource identifiers can identify secured resources in a storage location at repository 101 (or that repository 101 controls access to). Metadata 114 is used in claims-based security processing to determine if an operation request is authorized for a secured resource.
FIG. 1A, will now be described in more detail. Policy store 107 can send policy 108 to repository 101. From policy 108, repository 101 can derive permissions 113. Repository 101 can then store permissions 113 in security table 112.
Subsequently, an application at client module 102 (e.g., 103A, 103B, etc.) may desire to perform an operation on a secured resource of repository 101. Client module 102 can send ID token request 121 to identity store 106. ID token request 121 can include appropriate credentials such that identity store 106 can authenticate client module 102 as the sender of ID token request 121. Identity store 106 can return ID token 122 to client module 102 in response to receiving token request 121. ID token 122 can include some claims with respect to the (e.g., basic) identity of client module 102, such as, for example, an operating system identity and group memberships. More specifically, claim 124 identifies client 102 as a member of the domain “org.com”
Client module 102 can submit logon 123, including ID token 122, to repository 101. Security processing module 104 can receive logon 123 and extract claim 124 from ID token 122. Security processing module 104 can then exchange further data with client module 102 to establish session 109 between client module 102 and repository 101. Security processing module 104 then establishes claims list 143 for session 143 and inserts claim 124 into claims list 143.
Client module 102 can also request other claims from other identity providers. For example, the application at client module 102 can submit claims request 126 to policy store 107. Claims request 126 can include appropriate credentials such that policy store can authenticate client module 102 as the sender of claims request 126. Policy store 107 can return token 127 to client module 102 in response to receiving claims request 126. Token 127 can include additional claims with respect to the identity of client module 102, such as, for example, further domain or group memberships. More specifically, claim 128 identifies client 102 as a member of the group “Division A” and claim 129 identifies client 102 as a member of Corporation “Corp 1”.
In response to receiving further claims, such as, for example, claims 128 and 129, client module 102 can request a nonce from repository 101. For example, client module 102 can submit nonce request 131 to repository 101. Security processing module can receive nonce request 131. In response to nonce request 131, security processing module 104 can return nonce 132 to client module 102.
Nonce 132 is used to minimize the possibility of replay attacks when passing claims. Client module 102 can then combine nonce 132 and claims 128 and 129 into claims 133. Client module 102 can then send claims 133 to repository 101. Claims 133 can be signed and the signing key can be passed in a (e.g., SAML) token to repository 101. Security processing module 104 verifies the token and adds claims 128 and 129 to claims list 143
Based on the claims list 143, security table 112, and metadata table 111, repository 101 can be secured for session 109. A subset of metadata 114 can be filtered from metadata table 111 representing resources that are accessible to session 109 and corresponding operations session 109 can perform on the accessible resources. Thus, any application (e.g., 103A, 103B, etc.) communicating via session 109 is uniformly afforded the same access to repository 101. FIG. 1B illustrates an example data flow 150 within the example computer architecture of FIG. 1A for securing resources of a resource store.
FIG. 2 illustrates a flow chart of an example method 200 for securing a resource store. The method 200 will be described with respect to the data in data flow 150 as well as other components and data of computer architecture 100.
Method 200 includes an act of receiving policy information for a resource store (act 201). For example, referring to FIG. 1A, repository 101 can receive policy 108. Within data flow 150, secured resource types 181, secured resources 182, and secured operations 191 can each represent a portion of policy 108. Secured resource types 181 indicates the types of resources, such as, for example, type 181 containers and type 182 container versions, that are that are to be secured at repository 101.
Secured resources 182 indicates specific instances of secured resource types that are to be protected at repository 101. For example, resource 182A represents that repository 101 is to secure containers for a programming framework. Likewise, resource 182D represents that repository 101 is to secure containers for Corp 1. Resource 182B represents that repository 101 is to secure version 1.0 of the programming framework. Similarly, resource 182C represents that repository 101 is to secure version 2.0 of the programming framework.
Secured operations 191 indicate secured operations that can be used at repository 101. Operation 191A indicates that secured resources at repository 101 can be read. Operation 191B indicates that secured resources are repository 101 can be updated.
Method 200 includes an act of deriving permissions for accessing secured resources in the resource store from the received policy information (act 202). For example, permissions 113 can be derived from policy 108. The permissions define secured operations that can be performed on secured resources in the resource store based on received identity information. For example, permissions 113 define read and update operations authorized for secured resources of repository 101 based on received identity information.
The permissions are derived from a secured operations table defining the secured operations that are possible for the resource store. The permissions are also derived from a secured resources table defining the secured resources within the resource store. Each secured resource is a specified resource type, from among a plurality of different resource types. The permissions are derived from each of the plurality of different resource types defined in a secured resource types table. For example, permissions 113 can be derived from secured resource types 181, secured resources 182, and secured operations 191.
Other portions of policy 108 can authorize specified secured operations for specified secured resources based on identity information. For example, other portions of policy 108 can indicate that if domain=org.com AND Group=Division A then may read Framework 2.0. This information can be used to derive permission 113A based on secured resource types 181, secured resources 182, and secured operations 191. Similar derivations can be sued to derive permissions 113B and 113C.
Method 200 includes an act of receiving identity information for a session connected to the resource store (act 203). For example, repository 101 can receive identity information for session 109. The identity information is accumulated from one or more claims submitted to the resource store on behalf of the session. For example, claims list 143 includes claims accumulated from ID token 122 and token 127.
Method 200 includes an act of determining the resource types that the session can access based on the derived permissions and the received identity information (act 204). For example, repository 101 can determine resource types that session 109 can access based on permissions 113 and claims list 143. Readable containers 186 represents the containers that session 109 is authorized to read. For example, session 109 is authorized to read resources in Framework 2.0 (182C) and resources in Corp. 1 (182D). Readable container versions 188 represents versions of containers that session 109 is authorized to read. For example, session 109 is authorized to read resources in Framework 2.0 (182C). However, session 109 is not authorized to read resources in Framework 1.0 (182B).
Updatable resources 187 represents the resources that session 109 is authorized to update. Based on claims list 143 and permissions 113, session 109 is not authorized to update any resources. When appropriate, updateable contain versions (similar to readable container versions 188) may also result.
Method 200 includes an act accessing a metadata table that maps secured resource identifiers to corresponding resource types (act 205). For example, repository 101 can access metadata table 111. Metadata table 111 maps resource identifies to corresponding containers and container versions. For example, metadata 114A maps resource ID=10 to container version 1.0 of container Framework.
Method 200 includes an act of filtering metadata table into a subset of metadata that includes resource identifiers for secured resources of the resource types the session can access (act 206). For example, repository 101 can filter metadata table 111 into resources 189 ( metadata 114C, 114D, and 114E). Resources 189 includes resource IDs for resources (e.g., assemblies) in the containers and container versions session 109 can access.
Policy information and security claims can be configured in any of a variety of different ways. In some embodiments, base tables are used for storing claims-based security information. FIG. 1D illustrates example base-tables for storing claim-based security information. Many of the tables in FIG. 1D correspond to and define the format of data in data flow 150. SecuredOperationsTable 177 defines the format secured operations 191. SecuredResourceTypesTable 176 defines the formation for secured resource types 181. SecuredResourceTable 174 defines the format for secured resources 182. SecuredResourcePermissonsTable 172 defines the format for security table 112.
PrincipalSecurtyClaimsTable 171 defines the format for claims list 143. The principal, in PrincipalSecurtyClaimsTable 171 can correspond to a SQL server login SID (i.e., suser_sid( ). Ordinary repository users can be prevented from accessing these tables. SecurityClaimsTypeTable 175 defines the types of claims, such as, for example, an operating system specific, that can be processed. SecurityClaimsTable 173 defines a claim format for claims included in a token.
To increase the efficiency of performing security checks, base tables for storing security information can include a normalized structure. For example, security claims can be factored into their own table.
Referring briefly back to FIG. 1B, adding or removing a container or a container version also adds or removes the corresponding secured resource entries (e.g., in security table 112) via associated triggers and referential actions.
The ability to control the permission set of a group of users as a whole, reduces administration costs and reduces the risk of a user having an incorrect permission set. Since database roles are also principals, groups of principals can be associated with permission sets by adding them to a new database role and adding the role to the permissions table. Windows groups may also be members of database roles or act as principals giving an opportunity to tie a user's permission set to AD maintained information.
Since column level permissions may also be associated with database roles, database roles are a flexible way to control the permissions sets of a group of users.
A set of helper functions can abstract the tasks of finding and changing permissions sets. Inline table valued functions can be used to provide high performance, highly parallelizable implementations of routines tat return permission sets for individual principals. In addition, table valued function based implementations provide for future security model extensions by abstracting away the underlying security implementation.
Other embodiments of the invention include determining if a requested operation is authorized. For example, referring back to FIG. 1A, client module 102 can submit operation request 141 to repository 101. Security processing module 104 can receive operation request 141. Operation request can be a request to read or update resources of repository 101.
FIG. 1C illustrates other components of repository 101. As depicted in FIG. 1C, security processing module 104 includes authorization module 161. Generally, authorization module 161 can access an operation request from a principal, access a claims list for the principal, access a set of permissions, and access metadata. From the accessed information, authorization module 161 returns an ID for any resource the principal is authorized to perform the operation on.
The list of IDs can be passed to data access module 162. Data access module 162 matches each ID to an identified resource. Data access module 162 then performs the requested operation each identified resource. Data access module 162 can pass the results of the operation (which can include identified resources, for example, for a read operation) to the requesting principal. For example, data access module can return result 142 to client module 102.
FIG. 3 illustrates a flow chart of an example method 300 for providing secure access to resources in a resource store. Method 300 will be described with respect to the components and data in FIGS. 1A and 1C.
Method 300 includes an act of receiving a request over a session connected to the resource store, the request to perform an operation on secured resources of a specified resource type contained in the resource store (act 301). For example, security processing module 104 can receive operation request 141 over session 109. Operation request 141 is a request to perform operation 151 Read Framework 2.0 (e.g., stored in storage 163). Operation 151 can be forwarded on to authorization module 161 (along with context information identifying session 109).
Method 300 includes an act of referring to a claims list for the session, the claims list including claims for the connection accumulated from one or more previously received security tokens, each claim asserting identify information for the session (act 302). For example, authorization module 161 can refer to claims list 143 for session 109.
Method 300 includes an act of referring to a security table at the resource store, the security table containing permissions for accessing secured resources contained in the resource store, the permissions defining secured operations that are authorized for secured resources contained in the resource store based on received identity information (act 303). For example, authorization module 161 can refer to security table 112.
Method 300 includes an act of determining from the permissions that the session is authorized to perform the requested operation on secured resources of the specified resource type based on the accumulated claims contained in the claims list (act 304). For example, authorization module 161 can determine form permissions 113 that session 109 is authorized to read resources of container Framework version 2.0.
Method 300 includes an act of performing the requested operation for any secured resources of the specified type contained in the resource store (act 305). For example, authorization module can populate authorized data access 192 to indicate that a read operation is to be performed for any resources in Framework 2.0. Referring briefly to metadata 114, this includes ID=31 and ID=32. Thus, authorized data access 192 can indicate that resources corresponding to ID=31 and ID=32 are to be red from storage 163.
Authorization module 161 can pass authorized data access 192 to data access module 162. Data access module 162 can identify resources stored at storage 163 that correspond to ID=31 and ID=32. As depicted in FIG. 1C, this is assembly 152 and assembly 153. Data access module 162 can return assembly 152 and assembly 153 to session 109 in result 142.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims (15)

What is claimed:
1. At a computer system, a method for providing secure access to resources in a resource store, the method comprising:
an act of receiving a request over a session connected to the resource store, the request to perform an operation on secured resources of a specified resource type contained in the resource store;
an act of referring to a claims list for the session, the claims list including claims for the connection accumulated from one or more previously received security tokens, each claim asserting identify information for the session;
an act of referring to a security table at the resources store, the security table containing permissions for accessing secured resources contained in the resource store, the permissions defining secured operations that are authorized for secured resources contained in the resource store based on received identity information;
determining accessible resource types for the session based upon the claims for the connection, the permissions in the security table, and the received identity information;
determining that the specified resource type is an accessibly resource type for the session;
an act of determining from the permissions that the session is authorized to perform the requested operation on secured resources of the specified resource type based on the accumulated claims contained in the claims list, wherein determining from the permissions that the session is authorized to perform the requested operation comprises determining that an application using the session is authorized to perform the requested operation based on the application using the session to communicate with the resource store; and
an act of performing the requested operation for any secured resources of the specified type contained in the resource store.
2. The method as recited in claim 1, wherein the act of receiving a request over a session connected to the resource store comprises an act of receive a request form an application that is utilizing the session.
3. The method as recited in claim 1, wherein the act of referring to a claims list for the session comprises an act of referring to a claims list that includes claims from an operating system ID token.
4. The method as recited in claim 1, wherein the act of referring to a security table at the resources store comprises an act of referring to a security table that is formatted in accordance with a base table for storing security information, the base table being stored at the resource store.
5. The method as recited in claim 1, wherein an act of performing the requested operation for any secured resources of the specified type contained in the resource store comprises an act of performing one or more of reading a resource and updating a resource in the resource store.
6. A computer system, comprising:
at least one hardware processor; and
a physical storage medium storing computer-executable instructions which, when executed by the processor, implement a method for providing secure access to resources in a resource store, wherein the method includes:
the computer system receiving a request over a session connected to the resource store, the request to perform an operation on secured resources of a specified resource type contained in the resource store;
the computer system obtaining data from a claims list for the session, the claims list including claims for the connection accumulated from one or more previously received security tokens, each claim asserting identify information for the session;
the computer system obtaining data from a security table at the resources store, the security table containing permissions for accessing secured resources contained in the resource store, the permissions defining secured operations that are authorized for secured resources contained in the resource store based on received identity information;
the computer system determining accessible resource types for the session based upon the claims for the connection, the permissions in the security table, and the received identity information;
the computer system determining that the specified resource type is an accessibly resource type for the session;
the computer system determining from the permissions that the session is authorized to perform the requested operation on secured resources of the specified resource type based on the accumulated claims contained in the claims list, wherein determining from the permissions that the session is authorized to perform the requested operation comprises determining that an application using the session is authorized to perform the requested operation based on the application using the session to communicate with the resource store; and
the computer system performing the requested operation for any secured resources of the specified type contained in the resource store.
7. The computer system as recited in claim 6, wherein said receiving a request over a session connected to the resource store comprises an act of receive a request form an application that is utilizing the session.
8. The computer system as recited in claim 6, wherein said obtaining data from a claims list for the session comprises an act of referring to a claims list that includes claims from an operating system ID token.
9. The computer system as recited in claim 6, wherein said obtaining data from a security table at the resources store comprises an act of referring to a security table that is formatted in accordance with a base table for storing security information, the base table being stored at the resource store.
10. The computer system as recited in claim 6, wherein said performing the requested operation for any secured resources of the specified type contained in the resource store comprises an act of performing one or more of reading a resource and updating a resource in the resource store.
11. A storage device storing computer-executable instructions which, when executed by a computing processor, implement a method for providing secure access to resources in a resource store, wherein the method includes:
a computing system receiving a request over a session connected to the resource store, the request to perform an operation on secured resources of a specified resource type contained in the resource store;
the computing system accessing a claims list for the session, the claims list including claims for the connection accumulated from one or more previously received security tokens, each claim asserting identify information for the session;
the computing system accessing a security table at the resources store, the security table containing permissions for accessing secured resources contained in the resource store, the permissions defining secured operations that are authorized for secured resources contained in the resource store based on received identity information;
the computer system determining accessible resource types for the session based upon the claims for the connection, the permissions in the security table, and the received identity information;
the computer system determining that the specified resource type is an accessibly resource type for the session;
the computing system determining from the permissions that the session is authorized to perform the requested operation on secured resources of the specified resource type based on the accumulated claims contained in the claims list, wherein determining from the permissions that the session is authorized to perform the requested operation comprises determining that an application using the session is authorized to perform the requested operation based on the application using the session to communicate with the resource store; and
the computing system performing the requested operation for any secured resources of the specified type contained in the resource store.
12. The storage device as recited in claim 11, wherein said receiving a request over a session connected to the resource store comprises an act of receive a request form an application that is utilizing the session.
13. The storage device as recited in claim 11, wherein said accessing a claims list for the session comprises an act of referring to a claims list that includes claims from an operating system ID token.
14. The storage device as recited in claim 11, wherein said accessing a security table at the resources store comprises an act of referring to a security table that is formatted in accordance with a base table for storing security information, the base table being stored at the resource store.
15. The storage device as recited in claim 11, wherein said performing the requested operation for any secured resources of the specified type contained in the resource store comprises an act of performing one or more of reading a resource and updating a resource in the resource store.
US13/287,421 2008-04-30 2011-11-02 Securing resource stores with claims-based security Active US8453217B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/287,421 US8453217B2 (en) 2008-04-30 2011-11-02 Securing resource stores with claims-based security

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/112,773 US8095963B2 (en) 2008-04-30 2008-04-30 Securing resource stores with claims-based security
US13/287,421 US8453217B2 (en) 2008-04-30 2011-11-02 Securing resource stores with claims-based security

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/112,773 Continuation US8095963B2 (en) 2008-04-30 2008-04-30 Securing resource stores with claims-based security

Publications (2)

Publication Number Publication Date
US20120047561A1 US20120047561A1 (en) 2012-02-23
US8453217B2 true US8453217B2 (en) 2013-05-28

Family

ID=41258029

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/112,773 Active 2030-08-09 US8095963B2 (en) 2008-04-30 2008-04-30 Securing resource stores with claims-based security
US13/287,421 Active US8453217B2 (en) 2008-04-30 2011-11-02 Securing resource stores with claims-based security

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US12/112,773 Active 2030-08-09 US8095963B2 (en) 2008-04-30 2008-04-30 Securing resource stores with claims-based security

Country Status (1)

Country Link
US (2) US8095963B2 (en)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8190661B2 (en) * 2007-01-24 2012-05-29 Microsoft Corporation Using virtual repository items for customized display
US8145673B2 (en) 2007-02-16 2012-03-27 Microsoft Corporation Easily queriable software repositories
US9449007B1 (en) * 2010-06-29 2016-09-20 Emc Corporation Controlling access to XAM metadata
US8776255B2 (en) 2010-09-30 2014-07-08 Microsoft Corporation Claims-aware role-based access control
US8949939B2 (en) * 2010-10-13 2015-02-03 Salesforce.Com, Inc. Methods and systems for provisioning access to customer organization data in a multi-tenant system
US9348712B1 (en) * 2010-12-22 2016-05-24 Netapp, Inc. Policy-based volume caching in a clustered storage system
US10657278B2 (en) 2013-03-15 2020-05-19 Live Nation Entertainment, Inc. Prioritized link establishment for data transfer using task scheduling
US9798892B2 (en) 2013-03-15 2017-10-24 Live Nation Entertainment, Inc. Prioritized link establishment for data transfer using task scheduling
US11100242B2 (en) * 2014-05-30 2021-08-24 Apple Inc. Restricted resource classes of an operating system
US10776163B1 (en) * 2018-03-16 2020-09-15 Amazon Technologies, Inc. Non-hierarchical management system for application programming interface resources
US10848498B2 (en) * 2018-08-13 2020-11-24 Capital One Services, Llc Systems and methods for dynamic granular access permissions

Citations (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581755A (en) 1995-01-31 1996-12-03 Unisys Corporation Method for maintaining a history of system data and processes for an enterprise
US5737591A (en) 1996-05-23 1998-04-07 Microsoft Corporation Database view generation system
US5877432A (en) 1996-11-26 1999-03-02 The University Of Dayton Magnetostrictive actuator
US5950209A (en) 1996-10-02 1999-09-07 Alcatel Usa Sourcing, L.P. Software release control system and method
US5978811A (en) 1992-07-29 1999-11-02 Texas Instruments Incorporated Information repository system and method for modeling data
US5999937A (en) 1997-06-06 1999-12-07 Madison Information Technologies, Inc. System and method for converting data between data sets
US6038393A (en) 1997-09-22 2000-03-14 Unisys Corp. Software development tool to accept object modeling data from a wide variety of other vendors and filter the format into a format that is able to be stored in OMG compliant UML representation
US6167405A (en) 1998-04-27 2000-12-26 Bull Hn Information Systems Inc. Method and apparatus for automatically populating a data warehouse system
US6173439B1 (en) 1998-03-11 2001-01-09 International Business Machines Corporation Interface mechanism and method for accessing non-object oriented data from within an object oriented framework
US6240416B1 (en) 1998-09-11 2001-05-29 Ambeo, Inc. Distributed metadata system and method
US6381743B1 (en) 1999-03-31 2002-04-30 Unisys Corp. Method and system for generating a hierarchial document type definition for data interchange among software tools
US20020087665A1 (en) 2000-12-29 2002-07-04 Marshall Donald Brent Method and system for integrated resource management
US6460052B1 (en) 1999-08-20 2002-10-01 Oracle Corporation Method and system for performing fine grain versioning
US20020184194A1 (en) 2001-05-30 2002-12-05 International Business Machines Corporation Multipurpose web-enabled browser
US6516090B1 (en) 1998-05-07 2003-02-04 Canon Kabushiki Kaisha Automated video interpretation system
US6532588B1 (en) 1998-10-21 2003-03-11 Xoucin, Inc. User centric program product distribution
US20030079107A1 (en) 2001-10-19 2003-04-24 International Business Machines Corporation System and method for providing an interface for a repository
US6578037B1 (en) 1998-10-05 2003-06-10 Oracle Corporation Partitioned access control to a database
US6598219B1 (en) 1998-11-30 2003-07-22 International Business Machines Corporation Method and mechanism for a task oriented XML data model
US20030225768A1 (en) 2002-06-03 2003-12-04 Microsoft Corporation Workload analysis tool for relational databases
US6662188B1 (en) 1999-09-03 2003-12-09 Cognos Incorporated Metadata model
US20040010776A1 (en) 2002-07-12 2004-01-15 Netspective Communications Computer system for performing reusable software application development from a set of declarative executable specifications
US6681382B1 (en) 2000-09-18 2004-01-20 Cisco Technology, Inc. Method and system for using virtual labels in a software configuration management system
US20040088578A1 (en) 2002-10-31 2004-05-06 International Business Machines Corporation System and method for credential delegation using identity assertion
US6745332B1 (en) 1999-06-29 2004-06-01 Oracle International Corporation Method and apparatus for enabling database privileges
US20040167899A1 (en) 2003-02-20 2004-08-26 Bea Systems, Inc. Virtual content repository browser
US20040167920A1 (en) 2003-02-20 2004-08-26 Bea Systems, Inc. Virtual repository content model
US20040186836A1 (en) 2003-03-17 2004-09-23 David Schlesinger Entitlement security and control for information system entitlement
US20040193912A1 (en) 2003-03-31 2004-09-30 Intel Corporation Methods and systems for managing security policies
US20040193594A1 (en) 2003-03-27 2004-09-30 Microsoft Corporation File system for displaying items of different types and from different physical locations
US20040199867A1 (en) 1999-06-11 2004-10-07 Cci Europe A.S. Content management system for managing publishing content objects
US20050044089A1 (en) 2003-08-21 2005-02-24 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US20050050084A1 (en) 2003-08-29 2005-03-03 Atm Shafiqul Khalid Dynamic registry partitioning
US20050050053A1 (en) 2003-08-21 2005-03-03 Microsoft Corporation. Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US6874146B1 (en) 1999-06-30 2005-03-29 Unisys Corporation Metadata driven system for effecting extensible data interchange based on universal modeling language (UML), meta object facility (MOF) and extensible markup language (XML) standards
US20050114784A1 (en) 2003-04-28 2005-05-26 Leslie Spring Rich media publishing
US20050131964A1 (en) 2003-12-12 2005-06-16 Oracle International Corporation Object versioning
US6920458B1 (en) 2000-09-22 2005-07-19 Sas Institute Inc. Model repository
US20050195660A1 (en) 2004-02-11 2005-09-08 Kavuri Ravi K. Clustered hierarchical file services
US6959326B1 (en) 2000-08-24 2005-10-25 International Business Machines Corporation Method, system, and program for gathering indexable metadata on content at a data repository
US6978281B1 (en) 2000-11-21 2005-12-20 Microsoft Corporation Versioned project data
US20060026168A1 (en) 2004-05-20 2006-02-02 Bea Systems, Inc. Data model for occasionally-connected application server
US6996558B2 (en) 2002-02-26 2006-02-07 International Business Machines Corporation Application portability and extensibility through database schema and query abstraction
US20060041661A1 (en) 2004-07-02 2006-02-23 Erikson John S Digital object repositories, models, protocol, apparatus, methods and software and data structures, relating thereto
US7028057B1 (en) 2000-04-22 2006-04-11 Oracle International Corporation Versioned relational database system with an optimistic constraint model
US20060112129A1 (en) 2004-11-24 2006-05-25 Microsoft Corporation Attributed relationship modeling with perspective
US7076496B1 (en) 2001-02-23 2006-07-11 3Com Corporation Method and system for server based software product release version tracking
US20060206449A1 (en) 2001-04-03 2006-09-14 Fletcher Thomas O P Computer file management system
US7120898B2 (en) 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
US7133871B2 (en) 2001-07-31 2006-11-07 International Business Machines Corporation Schema for sharing relational database types
US7143091B2 (en) 2002-02-04 2006-11-28 Cataphorn, Inc. Method and apparatus for sociological data mining
US7146606B2 (en) 2003-06-26 2006-12-05 Microsoft Corporation General purpose intermediate representation of software for software development tools
US7146355B2 (en) 2001-03-15 2006-12-05 International Business Machines Corporation Method and structure for efficiently retrieving artifacts in a fine grained software configuration management repository
US7155703B2 (en) 2003-07-18 2006-12-26 Microsoft Corporation Virtual method protection
US7168063B2 (en) 2003-06-10 2007-01-23 Microsoft Corporation Systems and methods for employing tagged types in a dynamic runtime environment
US20070055680A1 (en) 2005-07-29 2007-03-08 Craig Statchuk Method and system for creating a taxonomy from business-oriented metadata content
US20070073776A1 (en) 2005-09-19 2007-03-29 Kalalian Steven P Digital file management
US20070073673A1 (en) 2005-09-26 2007-03-29 Bea Systems, Inc. System and method for content management security
US20070094300A1 (en) 2005-10-24 2007-04-26 Emc Corp. Virtual repository management
US7213037B2 (en) 2003-01-13 2007-05-01 I2 Technologies Us, Inc. Master data management system for centrally managing cached data representing core enterprise reference data maintained as locked in true state read only access until completion of manipulation process
US20070156687A1 (en) 2005-12-22 2007-07-05 Sam Idicula Efficient implementation of multiple work areas in a file system like repository that supports file versioning
US20070192374A1 (en) 2006-02-16 2007-08-16 Emc Corporation Virtual repository management to provide functionality
US20070203925A1 (en) 2002-05-17 2007-08-30 Aleri, Inc. Database system and methods
US20070208744A1 (en) 2006-03-01 2007-09-06 Oracle International Corporation Flexible Authentication Framework
US20070255677A1 (en) 2006-04-28 2007-11-01 Sun Microsystems, Inc. Method and apparatus for browsing search results via a virtual file system
US20070276851A1 (en) 2006-05-02 2007-11-29 International Business Machines Corporation System and method for optimizing federated and ETL'd databases having multidimensionally constrained data
US7350172B1 (en) 2004-09-20 2008-03-25 The Mathworks, Inc. Reporting of aspects and partitioning of automatically generated code according to a partitioning scheme
US7349913B2 (en) 2003-08-21 2008-03-25 Microsoft Corporation Storage platform for organizing, searching, and sharing data
US20080098349A1 (en) 2001-10-25 2008-04-24 The Mathworks, Inc. Traceability in a modeling environment
US7383255B2 (en) 2003-06-23 2008-06-03 Microsoft Corporation Common query runtime system and application programming interface
US20080163332A1 (en) * 2006-12-28 2008-07-03 Richard Hanson Selective secure database communications
US20080177692A1 (en) 2007-01-24 2008-07-24 Microsoft Corporation Using virtual repository items for customized display
US20080201330A1 (en) 2007-02-16 2008-08-21 Microsoft Corporation Software repositories
US20080201355A1 (en) 2007-02-16 2008-08-21 Microsoft Corporation Easily queriable software repositories
US20080288510A1 (en) 2007-05-16 2008-11-20 Microsoft Corporation Data model for a common language
US20080320377A1 (en) 2007-06-25 2008-12-25 France Telecom Document management system
US7558781B2 (en) 2000-12-12 2009-07-07 Home Box Office, Inc. Digital asset data type definitions
US7783763B2 (en) 2006-06-06 2010-08-24 International Business Machines Corporation Managing stateful data in a partitioned application server environment
US20100325170A1 (en) 2009-06-22 2010-12-23 Microsoft Corporation Partitioning modeling platform data

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5878432A (en) 1996-10-29 1999-03-02 International Business Machines Corporation Object oriented framework mechanism for a source code repository

Patent Citations (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978811A (en) 1992-07-29 1999-11-02 Texas Instruments Incorporated Information repository system and method for modeling data
US5581755A (en) 1995-01-31 1996-12-03 Unisys Corporation Method for maintaining a history of system data and processes for an enterprise
US5737591A (en) 1996-05-23 1998-04-07 Microsoft Corporation Database view generation system
US5950209A (en) 1996-10-02 1999-09-07 Alcatel Usa Sourcing, L.P. Software release control system and method
US5877432A (en) 1996-11-26 1999-03-02 The University Of Dayton Magnetostrictive actuator
US5999937A (en) 1997-06-06 1999-12-07 Madison Information Technologies, Inc. System and method for converting data between data sets
US6038393A (en) 1997-09-22 2000-03-14 Unisys Corp. Software development tool to accept object modeling data from a wide variety of other vendors and filter the format into a format that is able to be stored in OMG compliant UML representation
US6173439B1 (en) 1998-03-11 2001-01-09 International Business Machines Corporation Interface mechanism and method for accessing non-object oriented data from within an object oriented framework
US6167405A (en) 1998-04-27 2000-12-26 Bull Hn Information Systems Inc. Method and apparatus for automatically populating a data warehouse system
US6516090B1 (en) 1998-05-07 2003-02-04 Canon Kabushiki Kaisha Automated video interpretation system
US6240416B1 (en) 1998-09-11 2001-05-29 Ambeo, Inc. Distributed metadata system and method
US6578037B1 (en) 1998-10-05 2003-06-10 Oracle Corporation Partitioned access control to a database
US6532588B1 (en) 1998-10-21 2003-03-11 Xoucin, Inc. User centric program product distribution
US6598219B1 (en) 1998-11-30 2003-07-22 International Business Machines Corporation Method and mechanism for a task oriented XML data model
US6381743B1 (en) 1999-03-31 2002-04-30 Unisys Corp. Method and system for generating a hierarchial document type definition for data interchange among software tools
US20040199867A1 (en) 1999-06-11 2004-10-07 Cci Europe A.S. Content management system for managing publishing content objects
US6745332B1 (en) 1999-06-29 2004-06-01 Oracle International Corporation Method and apparatus for enabling database privileges
US6874146B1 (en) 1999-06-30 2005-03-29 Unisys Corporation Metadata driven system for effecting extensible data interchange based on universal modeling language (UML), meta object facility (MOF) and extensible markup language (XML) standards
US6460052B1 (en) 1999-08-20 2002-10-01 Oracle Corporation Method and system for performing fine grain versioning
US6662188B1 (en) 1999-09-03 2003-12-09 Cognos Incorporated Metadata model
US7028057B1 (en) 2000-04-22 2006-04-11 Oracle International Corporation Versioned relational database system with an optimistic constraint model
US6959326B1 (en) 2000-08-24 2005-10-25 International Business Machines Corporation Method, system, and program for gathering indexable metadata on content at a data repository
US6681382B1 (en) 2000-09-18 2004-01-20 Cisco Technology, Inc. Method and system for using virtual labels in a software configuration management system
US6920458B1 (en) 2000-09-22 2005-07-19 Sas Institute Inc. Model repository
US6978281B1 (en) 2000-11-21 2005-12-20 Microsoft Corporation Versioned project data
US7558781B2 (en) 2000-12-12 2009-07-07 Home Box Office, Inc. Digital asset data type definitions
US20020087665A1 (en) 2000-12-29 2002-07-04 Marshall Donald Brent Method and system for integrated resource management
US7076496B1 (en) 2001-02-23 2006-07-11 3Com Corporation Method and system for server based software product release version tracking
US7146355B2 (en) 2001-03-15 2006-12-05 International Business Machines Corporation Method and structure for efficiently retrieving artifacts in a fine grained software configuration management repository
US20060206449A1 (en) 2001-04-03 2006-09-14 Fletcher Thomas O P Computer file management system
US20020184194A1 (en) 2001-05-30 2002-12-05 International Business Machines Corporation Multipurpose web-enabled browser
US7133871B2 (en) 2001-07-31 2006-11-07 International Business Machines Corporation Schema for sharing relational database types
US20030079107A1 (en) 2001-10-19 2003-04-24 International Business Machines Corporation System and method for providing an interface for a repository
US20080098349A1 (en) 2001-10-25 2008-04-24 The Mathworks, Inc. Traceability in a modeling environment
US7143091B2 (en) 2002-02-04 2006-11-28 Cataphorn, Inc. Method and apparatus for sociological data mining
US6996558B2 (en) 2002-02-26 2006-02-07 International Business Machines Corporation Application portability and extensibility through database schema and query abstraction
US20070203925A1 (en) 2002-05-17 2007-08-30 Aleri, Inc. Database system and methods
US20030225768A1 (en) 2002-06-03 2003-12-04 Microsoft Corporation Workload analysis tool for relational databases
US20040010776A1 (en) 2002-07-12 2004-01-15 Netspective Communications Computer system for performing reusable software application development from a set of declarative executable specifications
US20040088578A1 (en) 2002-10-31 2004-05-06 International Business Machines Corporation System and method for credential delegation using identity assertion
US7213037B2 (en) 2003-01-13 2007-05-01 I2 Technologies Us, Inc. Master data management system for centrally managing cached data representing core enterprise reference data maintained as locked in true state read only access until completion of manipulation process
US20040167920A1 (en) 2003-02-20 2004-08-26 Bea Systems, Inc. Virtual repository content model
US20040167899A1 (en) 2003-02-20 2004-08-26 Bea Systems, Inc. Virtual content repository browser
US20040186836A1 (en) 2003-03-17 2004-09-23 David Schlesinger Entitlement security and control for information system entitlement
US20040193594A1 (en) 2003-03-27 2004-09-30 Microsoft Corporation File system for displaying items of different types and from different physical locations
US20040193912A1 (en) 2003-03-31 2004-09-30 Intel Corporation Methods and systems for managing security policies
US20050114784A1 (en) 2003-04-28 2005-05-26 Leslie Spring Rich media publishing
US7168063B2 (en) 2003-06-10 2007-01-23 Microsoft Corporation Systems and methods for employing tagged types in a dynamic runtime environment
US7383255B2 (en) 2003-06-23 2008-06-03 Microsoft Corporation Common query runtime system and application programming interface
US7146606B2 (en) 2003-06-26 2006-12-05 Microsoft Corporation General purpose intermediate representation of software for software development tools
US7120898B2 (en) 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
US7155703B2 (en) 2003-07-18 2006-12-26 Microsoft Corporation Virtual method protection
US7349913B2 (en) 2003-08-21 2008-03-25 Microsoft Corporation Storage platform for organizing, searching, and sharing data
US20050044089A1 (en) 2003-08-21 2005-02-24 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US20050050053A1 (en) 2003-08-21 2005-03-03 Microsoft Corporation. Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US20050050084A1 (en) 2003-08-29 2005-03-03 Atm Shafiqul Khalid Dynamic registry partitioning
US20050131964A1 (en) 2003-12-12 2005-06-16 Oracle International Corporation Object versioning
US20050195660A1 (en) 2004-02-11 2005-09-08 Kavuri Ravi K. Clustered hierarchical file services
US20050226059A1 (en) 2004-02-11 2005-10-13 Storage Technology Corporation Clustered hierarchical file services
US20060026168A1 (en) 2004-05-20 2006-02-02 Bea Systems, Inc. Data model for occasionally-connected application server
US20060041661A1 (en) 2004-07-02 2006-02-23 Erikson John S Digital object repositories, models, protocol, apparatus, methods and software and data structures, relating thereto
US7350172B1 (en) 2004-09-20 2008-03-25 The Mathworks, Inc. Reporting of aspects and partitioning of automatically generated code according to a partitioning scheme
US20060112129A1 (en) 2004-11-24 2006-05-25 Microsoft Corporation Attributed relationship modeling with perspective
US20070055680A1 (en) 2005-07-29 2007-03-08 Craig Statchuk Method and system for creating a taxonomy from business-oriented metadata content
US20070073776A1 (en) 2005-09-19 2007-03-29 Kalalian Steven P Digital file management
US20070073673A1 (en) 2005-09-26 2007-03-29 Bea Systems, Inc. System and method for content management security
US20070094300A1 (en) 2005-10-24 2007-04-26 Emc Corp. Virtual repository management
US20070156687A1 (en) 2005-12-22 2007-07-05 Sam Idicula Efficient implementation of multiple work areas in a file system like repository that supports file versioning
US20070192374A1 (en) 2006-02-16 2007-08-16 Emc Corporation Virtual repository management to provide functionality
US20070208744A1 (en) 2006-03-01 2007-09-06 Oracle International Corporation Flexible Authentication Framework
US20070255677A1 (en) 2006-04-28 2007-11-01 Sun Microsystems, Inc. Method and apparatus for browsing search results via a virtual file system
US20070276851A1 (en) 2006-05-02 2007-11-29 International Business Machines Corporation System and method for optimizing federated and ETL'd databases having multidimensionally constrained data
US7783763B2 (en) 2006-06-06 2010-08-24 International Business Machines Corporation Managing stateful data in a partitioned application server environment
US20080163332A1 (en) * 2006-12-28 2008-07-03 Richard Hanson Selective secure database communications
US20080177692A1 (en) 2007-01-24 2008-07-24 Microsoft Corporation Using virtual repository items for customized display
US20080201330A1 (en) 2007-02-16 2008-08-21 Microsoft Corporation Software repositories
US20080201355A1 (en) 2007-02-16 2008-08-21 Microsoft Corporation Easily queriable software repositories
US20080288510A1 (en) 2007-05-16 2008-11-20 Microsoft Corporation Data model for a common language
US20080320377A1 (en) 2007-06-25 2008-12-25 France Telecom Document management system
US20100325170A1 (en) 2009-06-22 2010-12-23 Microsoft Corporation Partitioning modeling platform data

Non-Patent Citations (47)

* Cited by examiner, † Cited by third party
Title
"What's on the CD?", O'Reilly VB .Net Core Classes in a Nutshell for Visual Studio .Net version 1.0, 2002, pp. 1-6.
A Framework for Expressing the Relationship Between Multiple Views in Requirements Specification, Bashar Nuseibeh, Jeff Kramer, Anthony Finkelstein, Oct. 1994, http://www.cs.ucl.ac.uk/staff/A.Finkelstein/papers/tse94.icse.pdf (20 pages).
Andre Van Der Hoek et al., "A Generic, Peer-toPeer Repository for Distributed Configuration Management," Software Engineering Research Laboratory, Department of Computer Science, University of Colorado, Boulder, Colorado. 1999 IEEE Proceedings of ICSE-18, available at http://delivery.acm.org/10.1145/230000/227786/p308-van-der-hoek.pdf?key1=227786&key2=1334925611&coll=GUIDE&dll=GUIDE&CFID-8075646&CFTOKEN=65412344.
Aske Simon Christensen, Anders Moller and Michael I. Schwartzbach, University of Aarhus, Denmark, "Extending Java for High-Level Web Service Construction," [online] ACM Transactions on Programming Languages and Systems, vol. 25, No. 6, Nov. 2003, [retrieved on Dec. 4, 2006], pp. 814-875. Retrieved from the Internet: http://delivery.acm.org/10.1145/950000/945890/p814-s-christensen.pdf?key1=945890&key2=3681925611&coll=ACM&dl=ACM&CFID=75919783&CFTOKEN=92791909.
Branko Milosavljevic, Milan Vidakovic, Srdjan Komazec and Gordana Milosavljevic, Faculty of Engineering, University of Novi Sad, Yugoslavia "User Interface Code Generation for EJB-Based Data Models Using Intermediate Form Representations," [online] Copyright 2003, PPPJ Jun. 16-18, 2003, Kilkenny City, Ireland, [retrieved on Dec. 4, 2006], pp. 125-128. Retrieved from the Internet: http://delivery.acm.org/10.1145/960000/957327/p125-milosavljevic.pdf?key1=957327&key2=4411925611&coll=GUIDE&dl=GUIDE&CFID=75919783&CFTOKEN=92792909.
Bustamente, Michele Leroux, "Building a Claims-Based Security Model in WCF", The ServerSide .Net Your Enterprise .Net Community, Mar. 28, 2007, 10 pages.
Edward Sciore, "Versioning and Configuration Management in an Object-Oriented Data Model," VLDB Journal, 3, 77-106, 1994, available at http://www.vldb.org/journal/VLDBJ3/P077.pdf.
Haggar, Java Bytecode: Understanding bytecode makes you a better programmer, Jul. 1, http://www.ibm.com/developerworks/ibm/library/it-haggar-bytecode/2001, pp. 1-9.
Internet Security in the Network Computing Framework Sep. 15, 1998. Source: IP.com. *
Macchini, Bruno, Reusing Software with ESTRO (Evolving Software Repository), 1992 IEEE, pp. 150-157.
McCluskey, Using Java Reflection, Jan. 1998, http://java.sun.com/developer/technicalArticles/ALT/Reflection pp. 1-8.
Microsoft SOA & Business Process, "Oslo", 2007, 1 page.
MSDN, "Oslo" Repository Architecture, 2009, 23 pages.
Neel Sundaresan and Reshad Moussa, NehaNet Corp., San Jose, California, "Algorithms and Programming Models for Efficient Representation of XML for Internet Applications," [online] WWW10, May 1-5, 2001, [retrieved on Dec. 4, 2006], pp. 366-375. Retrieved from the Internet: http://delivery.acm.org/10.1145/380000/372090/p336-sundaresan.pdf?key1=372090&key2=4204925611&coll=ACM&dl=ACM&CFID=75919783&CFTOKEN=92791909.
Neil et al., "A Study of Usability of Web-Based Software Repositories" in: IEEE Software Methods and Tools 2000, Nov. 2000, pp. 51-58.
Notice of Allowance dated Oct. 26, 2012 cited in U.S. Appl. No. 13/414,467.
Ort and Bhakti, Java Architecture for XML Binding (JAXB), Mar. 2003, http://java.sun.com/developer/technicalArticles/WebServices/jaxb pp. 1-12.
Petro, James, et al., "Model-Based Reuse Repositories-Concepts and Experience", 1995 IEEE, pp. 60-69.
Philip A. Bernstein, et al., "Microsoft Repository Version 2 and the Open Information Model," Microsoft Corporation, One Microsoft Way, Redmond, Washington, available at https://research.microsoft.com/~philbe/Info%20Sys%20on%20MS%20Repository%20for%20Web.pdf.
Philip A. Bernstein, et al., "Microsoft Repository Version 2 and the Open Information Model," Microsoft Corporation, One Microsoft Way, Redmond, Washington, available at https://research.microsoft.com/˜philbe/Info%20Sys%20on%20MS%20Repository%20for%20Web.pdf.
Pierre-Alain Muller, Franck Fleurey, Didier Vojtisek, Zoe Drey, Damien Pollet, Frederic Fondement, Philippe Studer and Jean-Marc Jezequel, "On Executable Meta-Languages applied to Model Transformations," [online] Date unknown, [retrieved on Dec. 4, 2006] pp. 1-48. Retrieved from the Internet: http://www.irisa.fr/triskell/publis/2005/Muller05c.pdf.
Recovering role-based access control security models from dynamic web applications Manar H. Alalfi, James R. Cordy, Thomas R. Dean. ICWE'12: Proceedings of the 12th international conference on Web Engineering Jul. 2012; Source: ACM Digital Library. *
Rose, Thomas, et al., "Organizing Software Repositories Modeling Requirements and Implementation Experiences", 1992 IEEE, pp. 31-38.
Session Authorization Policy Element (RFC3520) Apr. 1, 2003. Source: IP.com. *
Tangsripairoj, Songsri, et al., "Organizing and Visualizing Software Repositories Using the Growing Hierarchical Self-Organizing Map", Journal of Information Science and Engineering 22, 283-295 (2006), Nov. 2005, pp. 283-295.
U.S Appl. No. 11/626,815, Feb. 24, 2012, Notice of Allowance.
U.S. Appl. No. 11/626,815, Jan. 19, 2010, Office Action.
U.S. Appl. No. 11/626,815, Jul. 23, 2010, Office Action.
U.S. Appl. No. 11/676,170, Dec. 17, 2008, Office Action.
U.S. Appl. No. 11/676,170, Jul. 21, 2009, Office Action.
U.S. Appl. No. 11/676,170, Mar. 29, 2012, Office Action.
U.S. Appl. No. 11/749,607, Aug. 19, 2010, Office Action.
U.S. Appl. No. 11/749,607, Aug. 30, 2010, Notice of Allowance.
U.S. Appl. No. 11/749,607, Mar. 9, 2010, Office Action.
U.S. Appl. No. 11/749,616, Feb. 4, 2011, Office Action.
U.S. Appl. No. 11/749,616, filed Nov. 21, 2011, Notice of Allowance.
U.S. Appl. No. 11/749,616, May 6, 2010, Office Action.
U.S. Appl. No. 11/749,616, Nov. 16, 2009, Office Action.
U.S. Appl. No. 12/112,773, May 10, 2011, Office Action.
U.S. Appl. No. 12/112,773, Sep. 16, 2011, Notice of Allowance.
U.S. Appl. No. 12/489,245, Sep. 29, 2011, Notice of Allowance.
U.S. Appl. No. 13/414,467, filed Mar. 7, 2012, Bloesch.
Using Multiple Representations Within a Viewpoint, Nigel James Stranger, Nov. 30, 1999, http://eprints.otago.ac.nz/26/01/Thesis.pdf (496 pages).
Venkatrao, SQL/CLI A New Binding Style for SQL, SIGMOD Record, vol. 24, No. 4, Dec. 1995, pp. 72-77.
Viewpoints: A Framework for Integrating Multiple Perspectives in System Development, A. Finkelsetin, J. Kramer, B. Nuseibeh, L. Finkelstein, M. Goedicke, http://www.cs.ucl.ac.uk/staff/A.Finkelstein/papers/ijseke92.pdf (27 pages).
Weinberger, Ellis, et al., "A security policy for a digital repository", Oct. 2002, 5 pages.
Worboys, Geoff, et al., "Firebird File and Metadata Security", Dec. 7, 2005, Document version 0.5, 12 pages.

Also Published As

Publication number Publication date
US20090276834A1 (en) 2009-11-05
US20120047561A1 (en) 2012-02-23
US8095963B2 (en) 2012-01-10

Similar Documents

Publication Publication Date Title
US8453217B2 (en) Securing resource stores with claims-based security
US10911428B1 (en) Use of metadata for computing resource access
US8769642B1 (en) Techniques for delegation of access privileges
US8726342B1 (en) Keystore access control system
US8959613B2 (en) System and method for managing access to a plurality of servers in an organization
US8281374B2 (en) Attested identities
US7529931B2 (en) Managing elevated rights on a network
US20060259776A1 (en) Extensible account authentication system
US20120167197A1 (en) Enabling granular discretionary access control for data stored in a cloud computing environment
US11411955B2 (en) User choice in data location and policy adherence
EP3938940B1 (en) Provision of policy compliant storage for did data
Bhatti et al. An integrated approach to federated identity and privilege management in open systems
US20050108526A1 (en) Query server system security and privacy access profiles
US10375177B1 (en) Identity mapping for federated user authentication
US8042153B2 (en) Reducing overhead associated with distributed password policy enforcement operations
US10148637B2 (en) Secure authentication to provide mobile access to shared network resources
CN116415217A (en) Instant authorization system based on zero trust architecture
CN1953454A (en) A safe audit method based on role management and system thereof
US7661125B2 (en) System for providing and utilizing a network trusted context
US8726335B2 (en) Consigning authentication method
US9467448B2 (en) Consigning authentication method
EP2954638B1 (en) System and method for validating scep certificate enrollment requests
US20190289014A1 (en) Methods and Apparatus for Controlling Application-Specific Access to a Secure Network
Jensen et al. Security policy management for handheld devices
Lock et al. Grid Security and its use of X. 509 Certificates

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BLOESCH, ANTHONY CHRISTOPHER;REEL/FRAME:027162/0796

Effective date: 20080430

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034544/0001

Effective date: 20141014

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8