Integrated application access
Claim Score by NHIP
Abstract
An application portal selectively provides a user access to items of a plurality of remote applications. At least one of the items is related to more than one of the remote applications. An authorization layer is included in the portal and includes a map indicating that the user is permitted to access at least one of the items.

Term
1.7 yearsto projected expiry
Projected expiry 31 May 2028, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
23 claims: 3 independent, 20 dependent
- 1A system, comprising:an application portal selectively providing access to items of a plurality of remote applications, wherein at least one of the items is related to more than one of the remote applications;and an authorization layer that is included in the portal and that includes a map indicating that a user is permitted to access at least one of the items.
- 8Broadest claimClaim Score 93, very broad(NHIP)A method, comprising:selectively accessing items related to a plurality of remote applications on behalf of a user, wherein at least one of the items is related to more than one of the remote applications;and determining whether the user is associated with at least one of the items in a map.
- 17A system, comprising:a first portal selectively providing a user access to items of a plurality of remote applications, wherein at least one of the items is related to more than one of the remote applications;a portal user interface included in the first portal, whereby at least one of the items may be accessed through the portal user interface;an authorization layer that is included in the first portal and that includes a map whereby it may be determined whether the user is permitted to access at least one of the items;wherein the data access layer is selectively synchronized with the remote applications, whereby the map is updated concerning information about at least one of the items that the user is permitted to access;and a second portal selectively providing access to at least one of the remote applications, including at least one of the items.
Independent claims3
108 paragraphs in 3 sections, as filed
BACKGROUND INFORMATION
0001A typical enterprise computing environment includes multiple heterogeneous and distributed applications for accessing a variety of different systems covering different subject areas. For example, many enterprises such as businesses and the like have different systems to support customer billing, sales, accounting, inventory, ordering, procurement, technical support, field repairs, etc. Such different systems each generally have a dedicated application, e.g., a web application or a client server application, for accessing each of the different systems in an enterprise. Applications allowing users to access different systems are often incompatible with one another for a variety of reasons, particularly when, to begin with, such applications are not even part of the same enterprise.
0002In one common scenario, where an enterprise is the result of a merger or acquisition, the enterprise may have multiple unrelated systems for performing a single function. For example, the two companies joined by a merger may each have had their own systems for tracking repairs prior to the merger, and after the merger it may be impractical or difficult to combine the two systems. To take another example, an enterprise may have one system for provisioning or fulfilling new orders and another system for tracking repair requests, the two systems having been developed independently. However, it may often be the case that the same user, e.g., a customer, wishes to access multiple systems within an enterprise because multiple systems include data of interest to the user. Indeed, a customer's account information may be spread across multiple systems within the enterprise, e.g., repair, billing, provisioning, etc.
0003It is common for enterprises to have what is known as a portal, e.g., a web site, that is a single point of access, through which users both within and without the enterprise can access diverse applications and systems. Often, portals provide web pages with links to different applications. When a user selects such a link, the user is invited to log in to the selected application. In some cases, using a technique known as “account aggregation,” the user may be permitted to provide to the portal login information for various applications. The portal then stores the user's login information for each of the various applications, and maps this login information to the user's login information for the portal.
0004However, to provide login information to the portal concerning each of the various enterprise applications that the user may need to access, means first that the user have a login account for each enterprise application that the user will access, and second that the user is aware of the enterprise application that the user needs to access. In many cases, users will not have the time or knowledge to provide such information to a portal. Further, an enterprise may have multiple portals, e.g., due to a merger or the like as discussed above, but such multiple portals may be un-integrated and therefore data concerning user entitlements to various application features and functions included in one portal may not be included in a second portal.
0005In sum, because present portals are able to allow users to view certain sets of data only according to application-specific login information limited to the portal, present portals make it difficult, if not impossible, for users to access data of interest to them. In general, present portals do not allow users to quickly and efficiently access the data that they wish to see, and do not create an interface to various systems within an enterprise that renders transparent to the user of the fact that all of these different systems exist.
BRIEF DESCRIPTION OF THE DRAWINGS
0006<figref idref="DRAWINGS">FIG. 1A</figref> illustrates an exemplary system for providing a user of a computing device with access to multiple applications within an enterprise through a portal.
0007<figref idref="DRAWINGS">FIG. 1B</figref> further illustrates an exemplary system for providing a user of a computing device with access to multiple applications within an enterprise through a portal.
0008<figref idref="DRAWINGS">FIG. 2</figref> illustrates an exemplary process for authenticating, authorizing, and entitling users of a portal.
0009<figref idref="DRAWINGS">FIG. 3</figref> provides a detailed view of an authorization layer, according to an embodiment.
0010<figref idref="DRAWINGS">FIG. 4</figref> illustrates an authentication layer, according to an embodiment.
0011<figref idref="DRAWINGS">FIG. 5</figref> illustrates an exemplary process for determining an authorization entity or entities associated with a user.
0012<figref idref="DRAWINGS">FIG. 6</figref> illustrates a first exemplary process for updating an authorization data store.
0013<figref idref="DRAWINGS">FIG. 7</figref> illustrates a second exemplary process for updating an authorization data store.
0014<figref idref="DRAWINGS">FIG. 8</figref> illustrates examples of authorization entities.
0015<figref idref="DRAWINGS">FIG. 9</figref> illustrates an exemplary process for using an administration interface.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
0016<figref idref="DRAWINGS">FIGS. 1A and 1B</figref> illustrate various aspects of an exemplary system <b>100</b> for providing user <b>102</b> of computing device <b>103</b> with access to multiple applications <b>140</b> through integration portal <b>115</b>.
0017As seen in <figref idref="DRAWINGS">FIG. 1A</figref>, portals <b>116</b> and <b>117</b> provide access to one or more applications <b>140</b> that also are accessible through portal <b>115</b>. In some cases, a portal <b>116</b> or <b>117</b> may be dedicated to a particular single application <b>140</b>. In any case, each of the portals <b>116</b> and <b>117</b> are generally dedicated to a particular subset of applications <b>140</b>. In general, the set of applications <b>140</b> available through portal <b>116</b> and a set of applications available through portal <b>117</b> do not overlap. Portal <b>115</b>, on the other hand, provides a single, integrated point of access for user <b>102</b> to all applications <b>140</b>.
0018Portals <b>116</b> and <b>117</b> are sometimes referred to as legacy portals because they generally, although not necessarily, pre-exist portal <b>115</b>. Portal <b>115</b> may replace portals <b>116</b> and <b>117</b>, although embodiments are possible and likely in which legacy portals <b>116</b> and <b>117</b> exist alongside portal <b>115</b>, thereby providing user <b>102</b> with several ways in which to access an application <b>140</b>. It should be understood that, although <figref idref="DRAWINGS">FIG. 1A</figref> shows two legacy portals <b>116</b> and <b>117</b>, embodiments are possible in which integration portal <b>115</b> provides access to applications <b>140</b> that previously were, and perhaps currently are, accessed through three or more legacy portals such as exemplary portals <b>116</b> and <b>117</b>. Further, in some embodiments some or all applications <b>140</b> may be accessed directly, e.g., by accessing a computing device on which application <b>140</b> is installed, through network <b>110</b>, etc.
0019As seen in <figref idref="DRAWINGS">FIG. 1B</figref>, user <b>102</b> of computing device <b>103</b> may be provided with access to multiple applications <b>140</b> within enterprise <b>101</b> through portal <b>115</b>. Enterprise <b>101</b> represents any enterprise, or any collection of enterprises, that includes multiple and disparate applications <b>140</b>. In fact, enterprise <b>101</b> is depicted in <figref idref="DRAWINGS">FIG. 1B</figref> for purposes of illustration, and not limitation, and it should be understood that portal <b>115</b> may be used to provide access to a set of application entities <b>141</b> included in applications <b>140</b>. Application entities <b>141</b> may be included in one or more applications <b>140</b>, and include items such as menus, web pages, and the like that provide various features and functions of applications <b>140</b> to user <b>102</b>. Alternatively, embodiments are possible that do not include stand-alone applications <b>140</b>, but simply include a set of application entities <b>141</b>, wherein various users <b>102</b> are authorized to access various subsets of application entities <b>141</b>. In any event, application entities <b>141</b> may be accessed through network <b>110</b> or some other network connected to portal <b>115</b>, regardless of whether applications <b>140</b> including an application entity <b>141</b> are included within enterprise <b>101</b>.
0020Portal <b>115</b> and computer <b>103</b> are generally each connected to network <b>110</b>, which may be any network capable of providing digital communications between portal <b>115</b> in computer <b>103</b>, and is generally a packet switched network. For example, network <b>110</b> may be any combination of a local area network (LAN), a wide area network (WAN), or the Internet, etc. Accordingly, user <b>102</b> generally accesses portal <b>115</b> by using a Web browser or some other suitable client application that is installed on computer <b>103</b>. As noted above, portals <b>116</b> and <b>117</b>, and in some cases applications <b>140</b>, may also be accessed through a network such as network <b>110</b>.
0021Portal <b>115</b> generally includes peripheral devices such as a keyboard, a mouse or other pointing device, a display, etc. to facilitate administration of portal <b>115</b> through administration interface <b>120</b>. Administration interface <b>120</b> is usually a graphical user interface (GUI) such as may be provided through a webpage accessible through a Web browser or the like. Portal <b>115</b> further provides user interface <b>121</b>, also usually a GUI, whereby user <b>102</b> may access applications <b>140</b>. User interface <b>121</b> may include screens or web pages for accessing or providing functionality related to a single application <b>140</b>, or for more than one application <b>140</b>. For example, functionality related to a billing application <b>140</b> and also to a provisioning application <b>140</b> may be combined together within a single screen or webpage of user interface <b>121</b>. Accordingly, user <b>102</b> may advantageously simultaneously access the two applications <b>140</b> where ordinarily the user <b>102</b> might be required to log in to the two applications <b>140</b> separately with separate user names and passwords.
0022Interfaces <b>120</b> and <b>121</b> may be rendered according to various ways of programming web pages, such as Java Server Pages (JSPs). Further, using server technologies, e.g., Enterprise Java Beans (EJB) and the like, data such as queries, responses to requests for information, etc., may be processed, e.g., submitted applications <b>140</b>, databases <b>145</b>, and/or data stores <b>167</b> and <b>190</b>, discussed further below with reference to <figref idref="DRAWINGS">FIGS. 3 and 4</figref>.
0023Portal <b>115</b> generally includes authentication layer <b>125</b>, authorization layer <b>130</b>, and/or data access layer <b>135</b>, each discussed in more detail below, to provide for access to applications <b>140</b> by user <b>102</b>. Similarly, portals <b>116</b> and <b>117</b> include authentication layers <b>126</b> and <b>127</b> respectively. In the embodiment illustrated in <figref idref="DRAWINGS">FIG. 1B</figref>, portals <b>116</b> and <b>117</b> further each include respectively authorization layers <b>131</b> and <b>132</b>. However, it is possible for authorization layers <b>131</b> or <b>132</b> to be included in one or more applications <b>140</b>. Further, in the illustrated embodiment, applications <b>140</b><i>a </i>and <b>140</b><i>b</i>, accessible through portal <b>116</b>, include data access layers <b>136</b> and <b>137</b> respectively. Portal <b>117</b> includes data access layer <b>138</b>, thereby negating any need for such to be included in applications <b>140</b> accessible through portal <b>117</b>.
0024Authentication layers <b>125</b>, <b>126</b>, and <b>127</b> generally include program instructions such as are known for authenticating user <b>102</b> to portals <b>115</b>, <b>116</b>, and <b>117</b>, respectively, e.g., by requiring entry of a login identifier and a password for user <b>102</b>, by checking a digital certificate, by verifying an Internet Protocol (IP) address for computer <b>103</b>, etc.
0025Authorization layers <b>130</b>, <b>131</b>, and <b>132</b> are included in portals <b>115</b>, <b>116</b>, and <b>117</b> respectively, and generally include data and program instructions to provide for access by user <b>102</b> to specified features and/or functionality in one or more applications <b>140</b> that user <b>102</b> has been authorized to access.
0026Data access layers <b>135</b>, <b>136</b>, <b>137</b>, and <b>138</b> generally include data and program instructions to provide for access by user <b>102</b> to one or more specific sets of data in applications <b>140</b>. Data access layers <b>136</b> and <b>137</b> are included in applications <b>140</b><i>a </i>and <b>140</b><i>b </i>respectively, and accordingly include instructions only for accessing data in the relevant application database <b>145</b>. Data access layer <b>135</b> is discussed further below with reference to <figref idref="DRAWINGS">FIG. 3</figref>. Certain applications <b>140</b> may allow all users <b>102</b> accessing the application <b>140</b> to access all data that may be provided by the application <b>140</b>, and therefore do not include a data access layer, as is illustrated in <figref idref="DRAWINGS">FIG. 1A</figref> with respect to application <b>140</b>c accessed via portal <b>116</b>.
0027Queue manager <b>142</b>, illustrated in <figref idref="DRAWINGS">FIG. 1B</figref>, supports sending and receiving messages between portal <b>115</b> and applications <b>140</b> by providing for asynchronous communications between portal <b>115</b> and applications <b>140</b>. Also, as discussed further below, queue manager <b>142</b> provides for portal <b>115</b> to receive data updates from databases <b>145</b>. In one embodiment, queue manager <b>142</b> includes IBM WebSphere MQ sold by International Business Machines Corp. of Armonk, N.Y.
0028Computer <b>103</b> may include any one of a number of computing devices, including, without limitation, a computer workstation, a desktop, notebook, laptop, or handheld computer, or some other computing device as is generally known, such as a Java-enabled cellular telephone or similar device. Computing devices such as the foregoing may employ any of a number of computer operating systems, including, but in no way limited to, known versions and/or varieties of the Microsoft Windows® operating system, the Unix operating system (e.g., the Solaris® operating system distributed by Sun Microsystems of Menlo Park, Calif.), the AIX UNIX operating system distributed by International Business Machines of Armonk, N.Y., and the Linux operating system. Computer <b>103</b> can include client applications such as web browser to permit access to portal <b>115</b>, as well as a display, input devices, memory, storage, etc. as needed to provide for access to portal <b>115</b>.
0029Portal <b>115</b>, and also portals <b>116</b> and <b>117</b>, generally include both hardware, including computing devices, and software for communicating with computer <b>103</b> and also applications <b>140</b>. For example, in an embodiment, portal <b>115</b> includes one or more server computers provided with relational database and web server software, and also software that includes program instructions for providing administration interface <b>120</b>, and also layers <b>125</b>, <b>130</b>, and <b>135</b>. Such server computers may be provided with any of the computer operating systems mentioned above, or some other computer operating system. Portal <b>115</b> generally further includes storage devices such as disk arrays or the like attached to computing devices such as the afore-mentioned server computers. Also, it should be understood that portal <b>115</b> generally includes input devices, displays, network connections, and other peripherals necessary to support the functioning of portal <b>115</b>.
0030Web server software enables a computing device within portal <b>115</b> to respond to requests from a web browser installed on computer <b>103</b>, e.g., hypertext transfer protocol (HTTP) requests. Such Web server software, in conjunction with program instructions included in authentication layer <b>125</b>, authorization layer <b>130</b>, and/or data access layer <b>135</b>, generally provides for communicating with applications <b>140</b>, and for requesting and retrieving information from databases <b>145</b>.
0031Applications <b>140</b> may communicate with portal <b>115</b> and databases <b>145</b> through a network such as a LAN (not shown), network <b>110</b>, or some other network. Although not shown in <figref idref="DRAWINGS">FIG. 1</figref>, it will be understood that applications <b>140</b> generally run on one or more server computers provided with hardware peripherals and operating systems such as those mentioned herein. Applications <b>140</b> are generally each associated with a database <b>145</b>, and in fact it is to be understood that applications <b>140</b> and databases <b>145</b> may be combined. Embodiments are also possible is which portal <b>115</b> accesses one or more databases <b>145</b> directly. For purposes of understanding illustrated embodiments, it is important to understand simply that applications <b>140</b> and databases <b>145</b> together generally support a particular business function or set of functionality. For example, an application <b>140</b> may be a billing system, a repair tracking system, an ordering system, etc.
0032Application entities <b>161</b> may be included in one or more applications <b>140</b>, or may be accessible only through portals <b>115</b>, <b>116</b>, or <b>117</b>, etc. For example, an application entity <b>161</b> may include an API call that affects data seen in both a billing system and an ordering system. To take another example, an application entity <b>161</b> may include a menu item, e.g., “View Customer Status,” relevant to multiple back end systems.
0033With respect to relational databases included within portal <b>115</b> and/or databases <b>145</b>, relational database software generally refers to a relational database management system (RDBMS), as is known. An RDBMS generally employs the known Structured Query Language (SQL) in addition to a language for creating, storing, editing, and executing stored procedures, such as the PL/SQL language mentioned above. However, it is to be understood that databases <b>145</b> may be some other kind of database such as a hierarchical database, a set of files, an application database in a proprietary format, etc. Each database <b>145</b> generally includes a computing device employing a computer operating system such as one of those mentioned above, and are accessed via a network in any one or more of a variety of manners, as is well known. Embodiments are possible in which at least some of databases <b>145</b> are both included in one RDBMS or are located within a single computing device.
0034Computer <b>103</b> and one or more computing devices included within portal <b>115</b> may each include instructions executable by one or more computing devices such as those listed above. Such instructions may be compiled or interpreted from computer programs created using a variety of programming languages and/or technologies, including, without limitation, and either alone or in combination, Java™, C, C++, Visual Basic, Java Script, Perl, etc. For example, one embodiment includes Enterprise Java Beans (EJBs) and stored procedures written in the PL/SQL language provided by Oracle Corporation of Redwood Shores, Calif. In general, a processor (e.g., a microprocessor) receives instructions, e.g., from a memory, a computer-readable medium, etc., and executes these instructions, thereby performing one or more processes, including one or more of the processes described herein. Such instructions and other data may be stored and transmitted using a variety of known computer-readable media.
0035A computer-readable medium includes any medium that participates in providing data (e.g., instructions), which may be read by a computer. Such a medium may take many forms, including, but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical or magnetic disks and other persistent memory. Volatile media include dynamic random access memory (DRAM), which typically constitutes a main memory. Transmission media include coaxial cables, copper wire and fiber optics, including the wires that comprise a system bus coupled to the processor. Transmission media may include or convey acoustic waves, light waves and electromagnetic emissions, such as those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM, DVD, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EEPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
0036As mentioned above, portal <b>115</b> includes authentication layer <b>125</b>, authorization layer <b>130</b>, and/or data access layer <b>135</b>. In embodiments discussed herein, portal <b>115</b> includes each of layers <b>125</b>, <b>130</b>, and <b>135</b>, although embodiments are contemplated in which not all of layers <b>125</b>, <b>130</b>, and <b>135</b> are present. Some identification of users <b>102</b> by authentication layer <b>125</b> is generally necessary. However, it is to be understood that embodiments are possible in which authorization layer <b>130</b> is omitted, and in which access to applications <b>140</b> by user <b>102</b> is determined solely by the entitlements provided through data access layer <b>135</b>. Similarly, data access layer <b>135</b> may be omitted from portal <b>115</b>, in which case users <b>102</b> may be given access to all data and/or functionality included within applications <b>140</b> that each user <b>102</b> is authorized to access.
0037In embodiments disclosed herein, users <b>102</b> generally may access applications <b>140</b> through portal <b>115</b>. Applications <b>140</b> are generally but not necessarily remote from portal <b>115</b>, i.e., accessed through a network such as a LAN, WAN, etc. Users <b>102</b> are thereby provided access to diverse applications <b>140</b> through a single portal user interface <b>121</b> common to all applications <b>140</b> that may be accessed through portal <b>115</b>. By providing such unified access to applications <b>140</b>, portal <b>115</b> provides user <b>102</b> with a simpler and more efficient way to access applications <b>140</b> than would be available to user <b>102</b> if it were necessary to access applications <b>140</b> separately, or through different portals <b>116</b> and <b>117</b>, and therefore to be authenticated, authorized, and entitled to diverse applications <b>140</b> separately. For example, because portal user interface <b>121</b> is common to multiple applications <b>140</b>, user <b>102</b> need not remember multiple login names and passwords, nor need user <b>102</b> remember multiple ways of accessing multiple applications <b>140</b>, e.g., multiple uniform resource locators (URLs) or web addresses.
0038<figref idref="DRAWINGS">FIG. 2</figref> illustrates an exemplary process <b>200</b> for authenticating, authorizing, and entitling users <b>102</b> of the portal <b>115</b>. It should be understood that user interactions with portal <b>115</b> as described with reference to process <b>200</b> occur through user interface <b>121</b>.
0039The following sections discuss the steps of the process <b>200</b> in detail. However, a brief overview of process <b>200</b> may be helpful before providing the following detailed discussion. Briefly, process <b>200</b> begins with step <b>205</b>, in which user <b>102</b> is authenticated to portal <b>115</b>, e.g., by providing a user name and password to portal <b>115</b> through interface <b>121</b>. Next, in step <b>210</b>, user <b>102</b> is authorized to access items, e.g., features and/or functions, in one or more applications <b>140</b>. Permissions <b>160</b>, discussed in more detail below with reference to <figref idref="DRAWINGS">FIG. 3</figref>, are generally determined according to the username and password provided in step <b>205</b>, and do not require further user interaction with portal <b>115</b> through user interface <b>121</b>. Next, in step <b>215</b>, portal <b>115</b> determines user <b>102</b> data access entities <b>171</b>, also discussed in more detail below. Next, in step <b>220</b>, user <b>102</b> is provided access to authorized applications <b>140</b> through portal user interface <b>121</b>. Process <b>200</b> ends after step <b>220</b>.
0040Process <b>200</b> will now be discussed in further detail. First, in step <b>205</b>, user <b>102</b> is authenticated by portal <b>115</b>. Authentication layer <b>125</b>, as mentioned above, is known for authenticating users <b>102</b> to portal <b>115</b>. Authentication layers <b>126</b> and <b>127</b>, in portals <b>116</b> and <b>117</b>, respectively, generally operate in a similar fashion to authentication layer <b>125</b>. For example, it is common to require users accessing applications over the World Wide Web of the Internet, and intranet, etc. to provide a login identifier and password before access is permitted. Generally a user <b>102</b> enters a login identifier and a password in a form provided through user interface <b>121</b>. The entered login identifier and password are then checked against a database of users <b>102</b> permitted to access portal <b>115</b>. Such database of users <b>102</b> may be protected by known security mechanisms, including storing login and password data concerning users <b>102</b> in encrypted form.
0041In one embodiment, the eTrust® SiteMinder software product sold by Computer Associates of Islandia, N.Y. is used to provide authentication of users <b>102</b> to portal <b>115</b>. Further, mechanisms such as digital certificates may be used to authenticate users <b>102</b>. Users <b>102</b> having digital certificates may provide portal <b>115</b> with a digital key that may be processed by portal <b>115</b>, e.g. using a hashing technique or the like, to authenticate user <b>102</b>. In general, authentication layer <b>125</b> or some similar mechanism is generally necessary to uniquely and definitively identified user <b>102</b> so that authorization and data access may take place as provided for by authorization layer <b>130</b> and data access layer <b>135</b> respectively.
0042Although not illustrated in <figref idref="DRAWINGS">FIG. 2</figref>, it should be understood that if portal <b>115</b> is unable to authenticate the user <b>102</b> and step <b>205</b>, process <b>200</b> will terminate. However, assuming that user <b>102</b> is successfully authenticated and step <b>205</b>, step <b>210</b> is executed next.
0043Continuing with process <b>200</b>, in step <b>210</b>, portal <b>115</b> provides user <b>102</b> with requested access to one or more applications <b>140</b>, whereupon a user may request access to one or more application entities <b>161</b>, meaning that authorization or authorizations <b>162</b> are determined as described hereinafter. However, unless user <b>102</b> is entitled to see all of the data presented by the requested applications <b>140</b>, portal <b>115</b> next determines data access entities <b>171</b> of user <b>102</b> to access data included in applications <b>140</b> and/or databases <b>145</b>, as described below.
0044<figref idref="DRAWINGS">FIG. 3</figref> provides a detailed view of authorization layer <b>130</b>, according to an embodiment. In step <b>215</b> of process <b>200</b>, portal <b>115</b> determines items, i.e., application entities <b>161</b>, in applications <b>140</b> that user <b>102</b> is authorized to access. Such determination is generally made by use of authorization layer <b>130</b>. By determining such application entities <b>161</b>, portal <b>115</b> is thereby able to present in user interface <b>121</b> functionality relating to one or more applications <b>140</b>. In cases where an application entity <b>161</b> relates to more than one application <b>140</b>, an authorization <b>162</b> for user <b>102</b> to access such application entity <b>161</b> may be determined transparently to user <b>102</b>, and may be determined at one time for such application entity <b>161</b> that may be applicable to more than one application <b>140</b>.
0045An authorization <b>162</b> includes an identifier for user <b>102</b>, a permission <b>160</b>, and an application entity <b>161</b>. Permissions <b>160</b> represent various kinds of authorization to access application entities <b>161</b> that may be accorded to users <b>102</b>. Application entities <b>161</b> are entities that may be identified in authorization data store <b>167</b> pertaining to applications <b>140</b>, such as an application <b>140</b> itself or a menu or webpage that may be provided in one or more applications <b>140</b>, or a method in an application program interface (API) that may be called or accessed by or on behalf of a user in an application <b>140</b>. Accordingly, permissions <b>160</b> specify actions that user <b>102</b> is authorized to take with respect to application entity <b>161</b>, e.g., authorizations to view, modify, delete, download, query, select, access, etc. application entity <b>161</b>.
0046<figref idref="DRAWINGS">FIG. 8</figref> illustrates examples of authorizations <b>162</b>, i.e., unique combinations of users <b>102</b>, permissions <b>160</b>, and application entities <b>161</b>. API authorization <b>162</b><i>a </i>specifies that user <b>102</b> has permission to access a particular application program interface (API). API authorizations <b>162</b><i>a </i>are used when more than one application <b>140</b> uses an API. For example, as described below with reference to <figref idref="DRAWINGS">FIG. 9</figref>, various applications <b>140</b> may provide user <b>102</b> with the ability to make administrative changes to portal <b>115</b> through administration interface <b>120</b>. Such administrative changes may include adding, modifying, or deleting authorizations <b>162</b> and/or data access entities <b>171</b>. For example, more than one application <b>140</b> accessible through portal <b>115</b> may provide user <b>102</b> with access to billing data. Accordingly, more than one application <b>140</b> may access an API that allows user <b>102</b> to add, delete, or modify billing data. However, if user <b>102</b> does not have the appropriate API authorizations <b>162</b><i>a </i>to access an API used to transmit additions, deletions, and modifications to an administration database, then even if user <b>102</b> is able to access administration interface <b>120</b>, user <b>102</b> will not have the ability to make administrative changes to portal <b>115</b>, such as allowing user <b>102</b> access to an API that provides access to billing data.
0047Menu authorization <b>162</b><i>b </i>pertains to menus or menu items that may be presented to user <b>102</b> through portal user interface <b>121</b>. For example, user <b>102</b> may be associated with an permission <b>160</b> to access a billing system, but may not be entitled to change any data in a billing system, but rather is simply entitled to view data in a billing system. Accordingly, authorization <b>162</b><i>b </i>may provide user <b>102</b> with access to menu items for viewing billing data, but user <b>102</b> will not be provided with authorization <b>162</b><i>b </i>for modifying billing data.
0048Page authorization <b>162</b><i>c </i>pertains to specific webpages or screens that may be presented to user <b>102</b> through portal user interface <b>121</b>. Continuing the example provided in the previous paragraph, user <b>102</b> may be provided with an authorization <b>162</b><i>c </i>to access a webpage that displays billing data, but not to access a webpage that allows support modification of billing data. Similarly, user <b>102</b> may be provided with an authorization <b>160</b><i>c </i>to access a webpage that displays high level or summary level data, but not to access a webpage that provides granular or detailed reporting.
0049Permissions <b>160</b> and application entities <b>161</b> generally have a many-to-many relationship in authorization data store <b>167</b> with each other and with users <b>102</b>. In other words, while authorization <b>162</b> generally includes one each of a permission <b>160</b> and an application entity <b>161</b>, the permission <b>160</b> and application entity <b>161</b> may be included in other authorizations <b>162</b>. Further, authorizations <b>162</b> may be, and generally are, associated with more than one user <b>102</b>. Sometimes such associations are achieved through a user group <b>155</b>. User groups <b>155</b> are simply groups of one or more users <b>102</b> that may be associated with authorizations <b>162</b>, i.e., permissions <b>160</b> and application entities <b>161</b>. Permissions <b>160</b> generally have a many-to-many relationship with users <b>102</b> and also with user groups <b>155</b>.
0050Associations of users <b>102</b> and authorizations <b>162</b> are generally identified in user permission map <b>151</b>, while relationships between user groups <b>155</b> and authorizations <b>162</b> are generally identified in user group permission map <b>150</b>. Generally user group map permission <b>150</b> and user permission map <b>151</b> are tables in a relational database included within portal <b>115</b>, such as authorization data store <b>167</b>. Further, a user profile <b>165</b>, including a unique user <b>102</b> identifier, is generally stored for each user <b>102</b> of portal <b>115</b>. A user profile <b>165</b> may include various information concerning user <b>102</b>, including one or more user groups <b>155</b> associated with user <b>102</b>. Embodiments are possible in which authorizations <b>162</b> may be stored directly in user profile <b>165</b>, e.g., a permission <b>160</b> and application entity <b>161</b> may be stored together in user profile <b>165</b>, thereby signifying an authorization <b>162</b> associated with user <b>102</b>.
0051By querying authorization data store <b>167</b> or the like, portal <b>115</b> may determine authorization or authorizations <b>162</b> associated with user <b>102</b>, i.e., the application entity or entities <b>161</b> that a user <b>102</b> is authorized to access, and the manner in which the user is authorized to access such application entities <b>161</b>. Such a determination may be used to govern the presentation of one or more applications <b>140</b> to user <b>102</b>, e.g., as takes place in step <b>215</b>.
0052Authorization data stage <b>168</b> is also included in authorization layer <b>130</b>. As discussed further below with respect to <figref idref="DRAWINGS">FIG. 7</figref>, authorization data stage <b>168</b> is used for receiving information from applications <b>140</b> concerning authorizations <b>162</b>, and for using this information to update maps <b>150</b> and <b>151</b> in authorization data store <b>167</b>. Similarly, authorization data stage <b>168</b> is used for receiving information from authorization data store <b>167</b> concerning authorizations <b>162</b>, and for using this information to update authorization information maintained by applications <b>140</b>. In an embodiment, authorization data stage <b>168</b> is maintained according to Lightweight Directory Access Protocol (LDAP). As is known, LDAP may be used to store and provide information concerning users <b>102</b> of application <b>140</b>.
0053Continuing with the description of process <b>200</b>, if portal <b>115</b> determines that user <b>102</b> is not authorized, i.e., is not associated with any permissions <b>160</b> to access any applications <b>140</b>, then process <b>200</b> will terminate following step <b>215</b>, although such termination is not illustrated in <figref idref="DRAWINGS">FIG. 2</figref>. On the other hand, if user <b>102</b> is associated with one or more permissions <b>160</b>, i.e., user <b>102</b> is authorized to access one or more applications <b>140</b>, then generally process <b>200</b> proceeds to step <b>220</b> wherein user <b>102</b> is presented with requested application entities <b>161</b>.
0054Further, as was noted above, embodiments are possible in which authorization layer <b>130</b> is omitted entirely. As will be apparent, step <b>215</b> will also be omitted in such embodiments. Accordingly, in these embodiments, process <b>200</b> will proceed directly from step <b>205</b> to step <b>215</b>. In such embodiments, users <b>102</b> may be allowed to access all applications <b>140</b> that are available through portal <b>115</b>, but may be restricted to accessing only data to which they are entitled as described below with respect to step <b>220</b>. Moreover, in embodiments in which data access layer <b>135</b> is omitted, process <b>200</b> ends after step <b>215</b>.
0055In step <b>220</b>, portal <b>115</b>, using data access layer <b>135</b>, determines data access entities <b>171</b> for user <b>102</b>. <figref idref="DRAWINGS">FIG. 4</figref> illustrates data access layer <b>135</b>, according to an embodiment. Data access layer <b>135</b> is described in further detail in co-pending application Ser. No. ______ entitled “INTEGRATED DATA ACCESS,” filed the same day as the present application, assigned to the assignee of the present application, and fully incorporated by reference herein in its entirety.
0056Data access entity represents an entitlement to access one or more data entities, i.e., a specified subset of data, in applications <b>140</b> and/or databases <b>145</b>, e.g., a record or set of records in tables in databases <b>145</b>. For example, data entities in a billing system may include a “subscriber” data entity, whereby each subscriber represents a customer or subscriber billed by the system. In this example, data access entity <b>171</b> may include a data entity identifying a subscriber, or, if the subscriber data entity exists in a hierarchy whereby subscribers are included in “subscriber groups,” data entity may include an identifier for a subscriber group. Generally, a data entity identifies data that is of interest only to a particular user or set of users <b>102</b>. Further, data identified by a data entity in a data access entity <b>171</b> is generally the only data that a user <b>102</b> associated with the data access entity <b>171</b> should be allowed to access in applications <b>140</b>. That is, data access entity <b>171</b> effectively serves as mechanism to prevent users <b>102</b> from accessing data that they are not entitled to access in addition to providing users <b>102</b> with access to data that they are entitled to access. It is possible to include more than one data entity in a data access entity <b>171</b>. For example, a first data entity in data access entity <b>171</b> may refer to a set of billing data, and a second data entity in data access entity <b>171</b> may refer to a set of repair data.
0057Returning again to process <b>200</b>, in step <b>220</b>, user <b>102</b> accessing applications <b>140</b> according to the authorizations determined in step <b>210</b> is provided with requested data according to data access entities <b>171</b>.
0058Following step <b>220</b>, process <b>200</b> ends.
0059<figref idref="DRAWINGS">FIG. 5</figref> illustrates an exemplary process <b>500</b> for determining an authorization entity or entities <b>171</b> associated with user <b>102</b>, thereby determining items such as data and/or functionality that user <b>102</b> is entitled to access in application <b>140</b>. As should be apparent, many of the steps of process <b>500</b> are carried out without being apparent to the user <b>102</b>, before the user <b>102</b> accesses application <b>14</b> or portions thereof.
0060In step <b>510</b>, user <b>102</b> is presented with one or more application entities <b>161</b> in user interface <b>121</b>. Step <b>505</b> may generally occur only after a user <b>102</b> has been authenticated to portal <b>115</b> as described above. However, it should be understood that step <b>505</b> may occur at any time a user <b>102</b> navigates to a web page or screen in user interface <b>121</b> presenting one or more application entities <b>161</b>. For example, user <b>102</b> may be presented with a screen or page in the user interface <b>121</b> that provides a list of applications, menus, web pages, screens, features provided by calling into an API, etc. that the user <b>102</b> may access in portal <b>115</b>.
0061Next, in step <b>520</b>, it is determined whether user <b>102</b> has requested to access an application entity <b>161</b>. For example, user <b>102</b> might request a report, enter a query, request a particular web page, or request to see some other portion of user interface <b>121</b>, such as a menu or set of menu items. If it is determined that user <b>102</b> has not requested to access an application entity <b>161</b>, process <b>500</b> proceeds to step <b>570</b> in which it is determined whether user <b>102</b> has requested a new screen presenting a different set of application entities <b>161</b>. However, if user <b>102</b> has requested to access one or more application entities <b>161</b> through application <b>140</b>, step <b>525</b> is executed next.
0062In step <b>525</b>, it is determined whether portal <b>115</b> is to check for authorizations <b>162</b> according to a user group <b>155</b>. Step <b>525</b> is optional. In some embodiments, portal <b>115</b> may always check for authorizations <b>162</b> according to user group <b>155</b>, while in other embodiments user groups <b>155</b> may not be included, and therefore such a check would not make sense. However, in some cases it may be possible for portal <b>115</b> to determine, e.g., according to a user identifier or other information in a user profile <b>165</b>, whether authorizations <b>162</b> may be associated with a user group <b>155</b> to which the user <b>102</b> belongs. If it is determined that portal <b>115</b> should check for authorizations <b>162</b> according to a user group <b>155</b>, step <b>530</b> is executed next. Otherwise, step <b>540</b> is executed next.
0063In step <b>530</b>, portal <b>115</b> identifies user group or groups <b>155</b> to which user <b>102</b> belongs. Portal <b>115</b> may support both users <b>102</b> who do not belong to any user groups <b>155</b> as well as users <b>102</b> who do belong to one or more user groups <b>155</b>. There are a number of different ways in which portal <b>115</b> may determine whether user <b>102</b> belongs to one or more user groups <b>155</b>. For example, information concerning user groups <b>155</b> may be stored in user profile <b>165</b>, or portal <b>115</b> may check user group map <b>150</b> to determine whether user <b>102</b> may be found.
0064Next, in step <b>535</b>, portal <b>115</b> queries user group authorization map <b>175</b> to determine authorizations <b>162</b> for user group <b>155</b> including user <b>102</b>, and stores authorizations <b>162</b> for user <b>102</b> in memory or some other medium, e.g., using a session variable or the like. In one embodiment, an Enterprise Java Bean (EJB) may be instantiated for storing, and providing portal <b>115</b> with access to, authorization <b>162</b>. Accordingly, when portal <b>115</b> needs to determine whether user <b>102</b> is entitled to access particular data, it may call the EJB that includes authorization <b>162</b> by passing in an identifier for the item, e.g., data, menu items, API methods, etc., that user <b>102</b> wishes to access, to determine whether such access may be granted. Other kinds of programming instructions, such as stored procedures, may be used, perhaps in combination with an EJB, to determine authorizations <b>162</b>.
0065In the embodiment illustrated by <figref idref="DRAWINGS">FIG. 5</figref>, step <b>540</b> is visited regardless of whether it has been determined in step <b>525</b> not to check for authorizations <b>162</b> for user <b>102</b> according to user group <b>155</b>. However, embodiments are possible in which, after checking for authorizations <b>162</b> according to user group <b>155</b> including user <b>102</b>, portal <b>115</b> then omits to check for authorizations <b>162</b> that are specifically associated with user <b>102</b> and not with user group <b>155</b>. Further, in some embodiments, if it has been determined not to check for authorizations <b>162</b> according to user groups <b>155</b> in step <b>525</b>, it is simply assumed that portal <b>115</b> should check for authorizations <b>162</b> according to the identity of user <b>102</b>. Step <b>540</b> is executed following step <b>535</b>.
0066In step <b>540</b>, portal <b>115</b> determines whether to check for authorizations <b>162</b> pertaining to user <b>102</b> simply according to the identity of user <b>102</b>. Such determination may be made according to information in a user profile <b>165</b>, according to information encoded into an identifier for user <b>102</b>, or according to other rules programmed into portal <b>115</b>. In any event, if such a check for authorizations <b>162</b> is to be made, step <b>545</b> is executed next. If not, step <b>555</b> is executed next. It should be noted that portal <b>115</b> is preferably programmed so that at least either steps <b>530</b> and <b>535</b> or <b>545</b> and <b>550</b> are executed, i.e., so that authorizations <b>162</b> are checked according to at least one of user <b>102</b> and user group <b>155</b>.
0067In step <b>545</b>, portal <b>115</b> queries user authorization map <b>180</b> to determine authorizations <b>162</b> for user <b>102</b> in application <b>140</b>. As noted above, authorizations <b>162</b> are generally keyed to a combination of user <b>102</b> and permission <b>160</b>.
0068Next, in step <b>550</b>, authorizations <b>162</b> relating to user <b>102</b> are then stored in memory or some other medium as described above with respect to step <b>525</b>. Step <b>545</b> is executed following step <b>540</b>.
0069Next, in step <b>555</b>, authorization <b>162</b> is verified according to the request for an application entity <b>161</b> made by the user or on behalf of the user in step <b>520</b>. Authorization <b>162</b> may be accessed, e.g., a call may be made to an EJB, to determine what data user <b>102</b> is entitled to access through application <b>140</b>. If it is determined in step <b>555</b> that user <b>102</b> is entitled to the requested application entity <b>161</b>, then step <b>560</b> is executed next. Otherwise, step <b>565</b> is executed next.
0070In step <b>560</b>, the GUI for application <b>140</b>, e.g., user interface <b>121</b>, provides the feature associated with application entity <b>161</b> that was requested in step <b>520</b>, e.g., by displaying a menu, menu items, web page, accessing an API, etc.
0071In step <b>565</b>, which is executed if authorization <b>162</b> could not be verified in step <b>555</b>, an error or message or the like may be displayed to user <b>102</b>.
0072In step <b>570</b>, a determination is made as to whether user <b>102</b> has requested a new screen or web page in user interface <b>121</b>. If not, process <b>500</b> proceeds to step <b>575</b>. Otherwise, process <b>500</b> returns to step <b>510</b>.
0073In step <b>575</b>, a determination is made as to whether user <b>102</b> has requested to exit portal <b>115</b>, or whether an indication that user <b>102</b> has exited portal <b>115</b> has been received in another manner, e.g., by a session variable or the like timing out. If such a determination is made, then process <b>500</b> ends. Otherwise, process <b>500</b> returns to step <b>570</b>.
0074<figref idref="DRAWINGS">FIG. 6</figref> illustrates a first exemplary process <b>600</b> for updating authorization data store <b>167</b>.
0075In step <b>605</b>, authorization <b>162</b> is revised, added to, or deleted from database <b>145</b>, authorization data store <b>167</b>, or a data store in one of authorization layers <b>131</b> or <b>132</b>, where authorization <b>162</b> pertains to an application entity <b>161</b>. Such revisions or additions of authorization <b>162</b> may occur in a variety of ways. For example, an administrator of an application <b>140</b> may add user <b>102</b> to a list in database <b>145</b> of users <b>102</b> authorized to access application <b>140</b>, and may further add to database <b>145</b> information concerning one or more authorizations <b>162</b> granted to user <b>102</b> with respect to application <b>140</b>. It is also possible to provide an administrator of portal <b>115</b> with the ability to add user <b>102</b> as an authorized user in data store <b>167</b>, and further with the ability to grant one or more authorizations <b>162</b> user <b>102</b> with respect to application entity <b>161</b>. Similarly, administrators may be provided with the ability to delete users <b>102</b> from database <b>145</b>, data store <b>167</b>, data stores in authorization layers <b>131</b> or <b>132</b>, etc., or to grant or revoke authorizations <b>162</b> to users <b>102</b>. In any event, the requirements of step <b>605</b> are met when authorization <b>162</b> is added to, revised in, or deleted from database <b>145</b>, authorization data store <b>167</b>, or a data store in one of authorization layers <b>131</b> or <b>132</b>.
0076Next, in step <b>610</b>, an update mechanism in the data store modified in step <b>605</b> is triggered to update authorization data stage <b>168</b> in authorization layer <b>135</b> with the information changed in step <b>605</b>. The update mechanism may be a set of program instructions included in application <b>140</b> and/or database <b>145</b>, or in authorization layers <b>131</b>, <b>132</b>, or <b>135</b>, whichever is associated with the data store updated in step <b>605</b>. For example, in an embodiment, the update mechanism may be a web service that periodically, e.g., once every 24 hours, synchronizes an LDAP data store associated with application <b>140</b> and data stage <b>168</b> which, as noted above, may be an LDAP data store. Other kinds of update mechanisms may also be used. For example, it is possible for database <b>145</b> to store all information relating to changed authorizations <b>162</b> in a file, e.g., using a stored procedure, and to provide such file to a corresponding update data stage <b>168</b> using file transfer protocol (FTP). Similarly, various stored procedures in database <b>145</b>, data store <b>167</b>, or data stores in authorization layers <b>131</b> or <b>132</b> may be created and utilized to provide information relating to changed authorizations <b>162</b> to update data stage <b>168</b>.
0077Next, in step <b>615</b>, the update mechanism triggered in step <b>610</b> is executed. For example, as noted above, a stored procedure in database <b>145</b> in data store <b>167</b>, or a data store in authorization layers <b>131</b> or <b>132</b> may send information concerning changed authorizations to data stage <b>168</b>.
0078Next, in step <b>625</b>, authorization <b>162</b> change information triggers an update mechanism in update data stage <b>168</b>, e.g., a stored procedure, a web service synchronizing LDAP data stores, etc., to update a table or tables in update data stage <b>168</b> that include authorization <b>162</b> information relating to application <b>140</b> and user <b>102</b>. In some embodiments, update data stage <b>168</b> includes only information concerning changed authorizations <b>162</b>, and is purged of all data after updating data access data store <b>190</b> as described below. It is also possible for updates to data stage <b>168</b> to include all information concerning authorizations <b>162</b> relating to application <b>140</b>, and for update data stage to therefore be essentially copied over to authorization data store <b>167</b>.
0079Next, in step <b>630</b>, an update mechanism in update data stage <b>168</b> is triggered to provide the authorization <b>162</b> change information received in step <b>625</b> to various data stores, e.g., all data stores other than the one updated in step <b>605</b>. For instance, an authorization <b>162</b> change to a database <b>145</b> may be updated in authorization data store <b>167</b>, and may be further propagated to data stores in authorization layers <b>131</b> and <b>132</b> in portals <b>116</b> and <b>117</b>. An update to authorization data store <b>167</b> may include an update to user permission map <b>150</b> or user group permission map <b>151</b>, and it will be understood that similar structures in a database <b>145</b> or in data stores in authorization layers <b>131</b> and <b>132</b> may be updated. Again, the update mechanism may be provided in a variety of ways, frequently according to a stored procedure executed in a database including data stage <b>168</b> or a web service. Further, the trigger for the update mechanism may be provided in a variety of ways, such as according to scheduling program that triggers the update mechanism on a periodic, e.g., once every <b>24</b> hours, basis, or the trigger may be event-based, e.g., based on updates being made to an LDAP data store associated with an application <b>140</b>, etc.
0080Following step <b>630</b>, process <b>600</b> ends.
0081<figref idref="DRAWINGS">FIG. 7</figref> illustrates an exemplary process <b>750</b> for updating information concerning authorizations <b>162</b>, e.g., in authorization data store <b>167</b>.
0082In step <b>755</b>, authorization layer <b>130</b> detects a change in one or more data access entities <b>171</b>. For example, authorization layer <b>130</b> may employ a database stored procedure, a web service, or some other mechanism for checking for changes to data access entities <b>171</b> in data access data store <b>190</b> on a periodic basis, or according to an event such as the update of data access data store <b>190</b>. Updates to data access entities <b>171</b> and data store <b>190</b> are described more fully in the above-referenced co-pending application Ser. No. ______, entitled “INTEGRATED DATA ACCESS.”
0083Next, in step <b>760</b>, authorization layer <b>130</b> determines whether the change detected in step <b>755</b> requires a change to authorizations <b>162</b>, e.g., an update to user permissions map <b>151</b> and/or user permissions map <b>150</b> in data access data store <b>167</b>. For example, if a user <b>102</b> is provided with a new entitlement to a data access entity <b>171</b>, such an association may require the user <b>102</b> and a permission <b>160</b> to be associated with an application entity <b>161</b>. In such a case, it may be that a user <b>102</b> the ability to modify a certain set of data records associated with data access entity <b>171</b>, and an authorization <b>162</b>, including the appropriate permission <b>160</b>, should be established accordingly in authorization data store <b>167</b>. For example, such modification of the set of data records may be accomplished by accessing an API method. Therefore, upon such modification to data access entities <b>171</b>, it is desirable to provide the user <b>102</b> with the appropriate authorization <b>162</b> to access the API method that will allow the user <b>102</b> to modify data according to the data access entity <b>171</b>.
0084If, in step <b>760</b>, authorization layer <b>130</b> determines that the change detected in step <b>755</b> does require a change to authorizations <b>162</b>, step <b>765</b> is executed next. If not, process <b>700</b> ends.
0085In step <b>765</b>, authorization layer <b>130</b> triggers an update of user permission map <b>151</b> and/or user group permission map <b>150</b> to make the authorization <b>161</b> change required by the data access entity <b>171</b> change detected in step <b>755</b>. Again, a database stored procedure, a web service, or some other mechanism may be used to trigger such a change in authorization data store <b>167</b>.
0086Next, in step <b>770</b>, authorization data store <b>167</b> is updated to reflect the change triggered in step <b>765</b>.
0087Following step <b>770</b>, process <b>700</b> ends.
0088<figref idref="DRAWINGS">FIG. 9</figref> illustrates an exemplary process <b>900</b> for using administration interface <b>120</b>.
0089In step <b>905</b>, portal <b>115</b> determines whether an administrative user <b>102</b> viewing administration interface <b>120</b> has entered a selection to create a new authorization <b>162</b>. Such selection may be entered by choosing a menu option, or the like. Note that an administrative user <b>102</b> may access portal <b>115</b> using a computer included in or directly connected to portal <b>115</b> rather than through network <b>110</b>, although access by an administrative user <b>102</b> through network <b>110</b> may also be possible. If user <b>102</b> has selected to create a new authorization <b>162</b>, step <b>910</b> is executed next. Otherwise, step <b>920</b> is executed next.
0090In step <b>910</b>, portal <b>115</b> defines the authorization <b>162</b>to be created. As noted above, in an embodiment, authorization <b>162</b> may pertain to a specified application entity <b>161</b>, e.g., a menu, menu item, API call, etc.
0091Next, in step <b>915</b>, portal <b>115</b> creates the defined authorization <b>162</b> by creating a record in user map <b>151</b> and/or user group map <b>150</b> including a user <b>102</b> or user group <b>155</b> as appropriate, a permission <b>160</b>, and application entity <b>160</b>.
0092In step <b>920</b>, it is determined whether user <b>102</b> of administration interface <b>120</b> has selected to create a new user <b>102</b> for portal <b>115</b>. If so, process <b>925</b> is executed next. Otherwise, step <b>930</b> is executed next.
0093In step <b>925</b>, portal <b>115</b> accepts input through administration interface <b>120</b> providing information to create a new user <b>102</b>, and saves the information in a user table or the like, and also saves information in other relevant stores, such as user group map <b>150</b>, user map <b>151</b>, user group data access map <b>175</b>, and user data access map <b>180</b>. Information concerning a new user <b>102</b> includes items to populate a user profile <b>165</b>, such as a user name, a password, permissions <b>160</b>, identifiers for user groups <b>155</b> to include the new user <b>102</b>, data access entities <b>171</b> granted to the new user <b>102</b>, etc. Once such information has been stored in the appropriate tables or the like, process <b>900</b> proceeds to step <b>930</b>.
0094In step <b>930</b>, it is determined whether input has been received from user <b>102</b> to create a new user group <b>155</b>. If so, step <b>935</b> is executed next. Otherwise, step <b>940</b> is executed next.
0095In step <b>935</b>, portal <b>115</b> accepts input through administration interface <b>120</b> providing information to create a new user group <b>155</b>, and saves the information in a user group table or the like, and also saves information in other relevant stores, such as user group map <b>150</b>. Input may also have been provided for associating the new user group <b>155</b> with permissions <b>160</b> and/or data access entities <b>171</b>, in which case user group data access map <b>175</b> and/or user data access map <b>180</b> may also be updated. Following step <b>935</b>, process <b>900</b> proceeds to step <b>940</b>.
0096In step <b>940</b>, it is determined whether input has been received from user <b>102</b> of administration interface <b>120</b> to modify an authorization <b>162</b>. If so, step <b>945</b> is executed next. Otherwise, step <b>950</b> is executed next.
0097In step <b>945</b>, authorization <b>162</b> is modified according to instructions received from user <b>102</b>. It should be understood that modification of authorization <b>162</b>may include deletion of authorization <b>162</b> from portal <b>115</b>, including removing data access entity <b>171</b> from user group map <b>150</b> and user map <b>151</b>. Other modifications to authorization <b>162</b> may include substituting a different permission <b>160</b> and/or authorization entity <b>161</b> into authorization <b>162</b>. Process <b>900</b> proceeds to step <b>950</b> following step <b>945</b>.
0098In step <b>950</b>, it is determined whether input has been received from user <b>102</b> of administration interface <b>120</b> to modify user <b>102</b>, e.g., to modify information in user profile <b>165</b> such as that provided above as described with respect to step <b>925</b>, to modify user map <b>151</b> associating user <b>102</b> with authorizations <b>162</b>, etc. If such input has been received, process <b>900</b> proceeds to step <b>955</b>. Otherwise, step <b>960</b> is executed next.
0099In step <b>955</b>, user profile <b>165</b>, user map <b>151</b>, etc., are updated according to the input received in step <b>950</b>. Further, it should be understood that information concerning user <b>102</b>, such as information concerning authorizations <b>162</b> associated with user <b>102</b> in user permission map <b>151</b>, may be updated in other ways, e.g., as described above with reference to <figref idref="DRAWINGS">FIGS. 6 and 7</figref>.
0100In step <b>960</b>, it is determined whether input has been received from a user <b>102</b> of administration interface <b>120</b> to modify user group <b>155</b>. If so, step <b>965</b> is executed next. Otherwise, step <b>970</b> is executed next.
0101In step <b>965</b>, user group <b>155</b> is modified according to input received in step <b>960</b>. Such modification may include deletion of user group <b>155</b>. Further, user group <b>155</b> may be modified by associating additional permissions <b>160</b> with user group <b>155</b> and user group map <b>150</b>, or by removing authorizations associated with user group <b>155</b> from user group map <b>150</b>.
0102In step <b>970</b>, portal <b>115</b> determines whether user <b>102</b> has selected an option in administration interface <b>120</b> to modify either user group data access map <b>175</b> or user data access map <b>180</b>. If so, process <b>900</b> proceeds to step <b>975</b>. However, if such input has not been received from user <b>102</b>, step <b>980</b> is executed next.
0103In step <b>975</b>, according to input received from user <b>102</b> of administration interface <b>120</b>, user group permission map <b>150</b> and/or user permission map <b>151</b> are modified. For example, a user <b>102</b> could be newly associated with a pre-existing authorization <b>162</b> in user map <b>151</b>. Similarly, user group <b>155</b> could be associated with a pre-existing authorization <b>162</b> in user group map <b>150</b>. Further, such mappings could be deleted from map <b>150</b> and/or map <b>151</b>.
0104In step <b>980</b>, it is determined whether input has been received to exit administration interface <b>120</b>. If so, process <b>900</b> ends. Otherwise, process <b>900</b> returns to step <b>905</b>.
0105The processes, systems, methods, heuristics, etc. described herein have been disclosed in the context of system <b>100</b>. However, the descriptions provided herein are intended to be illustrative and not restrictive, and it is to be understood that the processes, systems, methods, heuristics, etc. described herein could be equally applicable to testing other systems.
0106Further, with regard to the processes, systems, methods, heuristics, etc. described herein, it should be understood that, although the steps of such processes, etc. have been described as occurring according to a certain ordered sequence, such processes could be practiced with the described steps performed in an order other than the order described herein. It further should be understood that certain steps could be performed simultaneously, that other steps could be added, or that certain steps described herein could be omitted. In other words, the descriptions of processes herein are provided for the purpose of illustrating certain embodiments, and should in no way be construed so as to limit the claimed invention.
0107Accordingly, it is to be understood that the above description is intended to be illustrative and not restrictive. Many embodiments and applications other than the examples provided would be apparent upon reading the above description. The scope of the invention should be determined, not with reference to the above description, but should instead be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. It is anticipated and intended that future developments will occur in the arts discussed herein, and that the disclosed systems and methods will be incorporated into such future embodiments. In sum, it should be understood that the invention is capable of modification and variation and is limited only by the following claims.
0108All terms used in the claims are intended to be given their broadest reasonable constructions and their ordinary meanings as understood by those skilled in the art unless an explicit indication to the contrary in made herein. In particular, use of the singular articles such as “a,” “the,” “said,” etc. should be read to recite one or more of the indicated elements unless a claim recites an explicit limitation to the contrary.
Contents3
7 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2011029502A1 | Cited by | United States of America | Pre-grant |
| US8560514B2 | Cited by | United States of America | Applicant |
| US2023015697A1 | Cited by | United States of America | Search report |
| CN110086747A | Cited by | China | Search report |
| US2009055545A1 | Cited by | United States of America | Pre-grant |
| US2008154892A1 | Cited by | United States of America | Pre-grant |
| US7836042B2 | Cited by | United States of America | Search report |
| US2003088617A1 | Cites | United States of America | Pre-grant |
| US2003149722A1 | Cites | United States of America | Pre-grant |
| US2004128347A1 | Cites | United States of America | Pre-grant |
| US2004230807A1 | Cites | United States of America | Pre-grant |
| US2005246292A1 | Cites | United States of America | Pre-grant |
| US2006015416A1 | Cites | United States of America | Pre-grant |
| US2006031681A1 | Cites | United States of America | Pre-grant |
| US2006206922A1 | Cites | United States of America | Pre-grant |
| US2007214421A1 | Cites | United States of America | Pre-grant |
| US6591300B1 | Cites | United States of America | Pre-grant |
| US6918088B2 | Cites | United States of America | Pre-grant |
| US7143136B1 | Cites | United States of America | Pre-grant |
| US7788388B2 | Cites | United States of America | Pre-grant |
4 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 58411106 | United States of America | A | |
| US20060584111 | – | – | – |
Members4
| Document | Office | Kind | |
|---|---|---|---|
| US2008098111A1 | United States of America | A1 | |
| US7882228B2 | United States of America | B2 | |
| US2011072137A1 | United States of America | A1 | |
| US8156224B2 | United States of America | B2 |
56 transactions on the USPTO file
Allowed after 2 non-final rejections, 1 final rejection and 1 RCE.
- Non-final rejections
- 2
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Email NotificationEML_NTR | EML_NTR | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Application Is Now CompleteCOMP | COMP | |
| Pre-Exam Office Action WithdrawnW/OA | W/OA | |
| Application Is Now CompleteCOMP | COMP | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
8 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 20080098111
- Publication, DOCDB
- 2008098111
- Publication, EPODOC
- US2008098111
- Application
- 11584111
- Application, DOCDB
- 58411106
- Application, EPODOC
- US20060584111
Titles
- English
- Integrated application access
Patent term adjustment
- A delay
- +483 daysthe office missed an examination deadline
- B delay
- +111 dayspendency past three years
- Applicant delay
- −5 days
- Net adjustment
- 589 days
Classification
- CPC, 4
- H04L63/10
- G06F21/6218
- G06F2221/2141
- G06Q10/087
- IPC, 1
- G06F15 173
- USPC, 1
- 709225000