Patent Description:
For simplicity and illustrative purposes, the principles of the present disclosure are described by referring mainly to embodiments and examples thereof. In the following description, numerous specific details are set forth in order to provide an understanding of the embodiments and examples. It will be apparent, however, to one of ordinary skill in the art, that the embodiments and examples may be practiced without limitation to these specific details. In some instances, well known methods and/or structures have not been described in detail so as not to unnecessarily obscure the description of the embodiments and examples. Furthermore, the embodiments and examples may be used together in various combinations.

A proxy server may receive a request from a client device to be directed to a URL, in which the URL may include a certain domain and a certain URL component. The certain URL component may be a certain subdirectory, a certain query string, a certain fragment part, and/or the like of the URL and may correspond to, for instance, a web page that may be accessible through a landing page corresponding to the certain domain listed in the URL. In some instances, for instance, when the certain domain includes a number of web pages and/or when the web page corresponding to the certain URL component is embedded among a number of web pages, navigating to the web page corresponding to the certain URL component from the landing page of the certain domain may be timeconsuming and may require extra resource and energy consumption on the client device.

In instances in which the user of the client device is to be authenticated prior to being granted access to the web page corresponding to the URL, the proxy server may redirect the web browser of the client device to an identity provider. Generally speaking, the identity provider may provide authentication and/or authorization services for service providers. The proxy server may append a suffix domain to the URL and may send the URL with the appended suffix domain to the identity provider for the identity provider to authenticate the user to be authorized to access the web pages corresponding to the URL. The identity provider may authenticate the user and if authenticated, may interact with the service provider of the web page corresponding to the URL such that the service provider may identify the user as being authentic when the user logs into the web page. The identity provider may also send a return URL to the proxy server, in which the return URL may not include the URL component that was included in the original URL. Instead, the return URL may include the original domain and the suffix domain of the proxy server. The proxy server may also communicate the return URL to the client device, such that the web browser on the client device may navigate to the return URL.

As discussed above, because the return URL may not include the URL component that was included in the original URL, when the web browser navigates to the return URL, the web browser may navigate to a proxy landing page. That is, the web browser may navigate to the landing page corresponding to a URL that includes both the domain and the suffix domain of the proxy, e.g., the proxy server, instead of the web page corresponding to the URL component that may be accessible through the proxy landing page. A technological issue with proxy servers redirecting client requests to identity providers may be that such redirections may result in the URL component listed in the URL being removed and the web browser being navigated to a proxy landing page URL instead of the URL having the URL component. The user may thus be required to navigate through multiple other web pages prior to reaching the web page corresponding to the URL component, which may result in extra energy and resource consumption by a processor of the client device.

Disclosed herein are apparatuses, methods, and computer-readable media that may enable a web browser to navigate directly to a web page corresponding to a URL component listed in an original URL following redirection of the web browser to an identity provider by a proxy server. Particularly, a processor may identify a navigation event responsive to a URL being entered into an address bar of a web browser, in which the URL may list a domain. The processor may also determine whether the web browser received an instruction to navigate to a return URL, in which the return URL may include a suffix domain and does not include the URL component that was included in the original URL. That is, for instance, the processor may determine whether the web browser received a return URL from the proxy server that includes a suffix domain and does not include the URL component from the original URL as may occur when the proxy server redirected the URL to an identity provider as discussed herein.

The processor may, based on a determination that the web browser received the instruction to navigate to the return URL, generate a modified URL by appending the suffix domain to the URL to restore the context of the URL for the proxy, e.g., proxy server. In addition, the processor may navigate the web browser to the modified URL. By generating the modified URL, which may include the suffix domain of the return URL and the URL component listed in the original URL, the web browser may directly navigate to the web page corresponding to the URL component. As a result, the processor may avoid having to navigate from the web page corresponding to the return URL to the web page corresponding to the URL component as may have been necessary in conventional client devices. A technological improvement afforded through implementation of the features of the present disclosure may be that the amount of processing resources and energy consumed may be reduced and/or minimized to navigate a web browser to a web page corresponding to an intended URL component through generation of the modified URL and navigation to the modified URL as discussed herein.

Reference is first made to <FIG> and <FIG>. <FIG> shows a block diagram of a network environment <NUM>, in which an apparatus <NUM> may navigate a web browser to a modified uniform resource locator (URL), and in which the modified URL may include a suffix domain and a URL component to cause the web browser to navigate to a web page corresponding to the URL component via a proxy server, in accordance with an embodiment of the present disclosure. <FIG> depicts a block diagram of the apparatus <NUM> depicted in <FIG>, in accordance with an embodiment of the present disclosure. It should be understood that the network environment <NUM> and the apparatus <NUM> of the network environment <NUM> may include additional features and that some of the features described herein may be removed and/or modified without departing from the scopes of the network environment <NUM> and/or the apparatus <NUM>.

The apparatus <NUM> may include a processor <NUM> that may control operations of the apparatus <NUM> and a memory <NUM> on which data that the processor <NUM> may access and/or may execute may be stored. The processor <NUM> may be a semiconductor-based microprocessor, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and/or other hardware device. The memory <NUM>, which may also be termed a computer readable medium, may be, for example, a Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, or the like. The memory <NUM> may be a non-transitory computer readable storage medium, where the term "non-transitory" does not encompass transitory propagating signals. In any regard, the memory <NUM> may have stored thereon machine-readable instructions that the processor <NUM> may execute.

Although the apparatus <NUM> is depicted as having a single processor <NUM>, it should be understood that the apparatus <NUM> may include additional processors and/or cores without departing from a scope of the apparatus <NUM>. In this regard, references to a single processor <NUM> as well as to a single memory <NUM> may be understood to additionally or alternatively pertain to multiple processors <NUM> and multiple memories <NUM>. In addition, or alternatively, the processor <NUM> and the memory <NUM> may be integrated into a single component, e.g., an integrated circuit on which both the processor <NUM> and the memory <NUM> may be provided. In addition, or alternatively, the operations described herein as being performed by the processor <NUM> may be distributed across multiple apparatuses <NUM> and/or multiple processors <NUM>.

According to examples, the apparatus <NUM> may be a computing device, such as a laptop computer, a tablet computer, a smartphone, or the like, through which a user may access web pages through a web browser <NUM> that may be executing on the apparatus <NUM>. In some examples, the user may input or otherwise cause to be inputted a URL <NUM> having a domain and a URL component <NUM> into an address bar <NUM> of the web browser. The URL <NUM> may thus be directed to particular URL component <NUM> of the domain, e.g., a "favorites" subdirectory. By way of non-limiting example in which the URL component <NUM> includes a subdirectory, the URL <NUM> may have the domain "www. com" and a subdirectory appended to the end of the domain. For instance, the URL may have a form similar to http://www. com/subdirectory. The subdirectory may correspond to a web page that may be accessible from a landing page of the "www. com" domain.

In addition, or alternatively, the URL component <NUM> may include a query string of the URL, e.g., a section of the URL that contains a "?". As a further example, the URL component <NUM> may include a fragment part of the URL, e.g., a section of the URL that contains or follows a "#". An example of a URL that includes a query string ("lang") and a fragment part ("section2") is: "https://xyz. com/sample/help. html?lang=US#section2.

In various examples, the user may type the URL <NUM> into the address bar <NUM>, paste the URL <NUM> into the address bar <NUM>, follow a link (e.g., from an email, a bookmark, or the like) that causes the URL <NUM> to be entered into the address bar <NUM>, and/or the like. In other examples, the URL <NUM> may be a redirect to the URL <NUM> by an application (e.g., by a javascript that automatically redirects to the URL <NUM>), and/or the like. In addition, once the user executes the URL <NUM>, the web browser <NUM> may attempt to navigate to the web page <NUM> corresponding to the URL <NUM>. In some instances, the web browser <NUM> may navigate to the web page <NUM> corresponding to the URL <NUM> either directly or via one or more redirects. In other instances in which the user is to be authenticated and/or authorized prior to being granted access to the web page <NUM> corresponding to the URL <NUM>, the web browser <NUM> may navigate to an identity provider <NUM> prior to navigating to the web page <NUM>. As shown in <FIG>, the web browser <NUM> may navigate to the web page <NUM> and/or be redirected to an identity provider <NUM> over a network <NUM>, which may be the Internet, a wide area network, and/or the like.

The identity provider <NUM> may provide authentication and authorization services to, for instance, service providers of resources, web pages, etc. That is, when the user attempts to sign into the web page <NUM>, the service provider of the web page <NUM> may not know how to authenticate the user and thus, may delegate that determination to the identity provider <NUM>. The web browser <NUM> may be redirected, e.g., based on a user request to access the web page <NUM>, to a URL that is hosted on the identity provider <NUM>. In addition, the user may enter their username, password, and/or other credential that the identity provider <NUM> may use to authenticate the user. If authenticated, the identity provider <NUM> may redirect back to the service provider and provide some claims that the user has been authenticated and the service provider may allow the user to access the web page <NUM> via the web browser <NUM>. The identity provider <NUM> and the service provider may employ any suitable authentication process to authenticate the user and to allow or reject access by the user to the web page <NUM>.

In some instances, the web browser <NUM> may direct the navigation to the URL <NUM> to a proxy server <NUM> that may operate as a proxy for the apparatus <NUM>, in which case the proxy server <NUM> may operate as a suffix proxy. The proxy server <NUM> may provide functionality, security, and/or privacy to the apparatus <NUM> and/or the user of the apparatus <NUM>. In these instances, the proxy server <NUM> may append a suffix domain of the proxy server <NUM> to the URL <NUM> and may send the URL <NUM> with the suffix domain to the identity provider <NUM>. For instance, the proxy server <NUM> may append the following type of suffix domain http://www. suffixproxy. com to the URL. In addition, or alternatively, the proxy server <NUM> may operate as a return or reverse proxy for the apparatus <NUM>.

Following authentication of the user, the identity provider <NUM> may provide some claims that the user has been authenticated to the service provider. The identity provider <NUM> may also send a return URL to the proxy server <NUM> and the proxy server <NUM> may communicate the return URL to the apparatus <NUM>. The return URL may be the same as the URL that the proxy server <NUM> sent to the identity provider <NUM> or may be different from that URL. In some instances, a service provider may store the URL in the web browser's <NUM> local-storage, session-storage, cookie, or the like, with the domain of the URL (e.g., www. com) before redirecting the URL to the identity provider <NUM>. After the user is authenticated, the user lands on the suffix domain landing page, e.g., www. suffixproxy. As a result, the service provider may not be able to read the original URL from the location at which the URL was stored, e.g., the local-storage, session-storage, cookie, or the like.

The return URL sent by service provider to the identity provider <NUM> may be the URL where claims are returned by the identity provider <NUM> and thus, the return URL may be different than the original URL <NUM>. Some service providers may also pass the original URL <NUM> in a state field (the name of the field may be different in different protocols) to the identity providers. In these examples, the proxy server may remove/lose the original URL <NUM> passed in the state field. In any event, the return URL may not include the URL component <NUM> that was in the original URL <NUM>.

Normally, the processor <NUM> may insert the return URL into the address bar <NUM> and may navigate to the return URL. As a result, instead of landing at the web page <NUM> corresponding to the URL component <NUM> listed in the original URL <NUM>, the user may land on a web page that corresponds to a landing page of the domain and suffix domain when the web browser <NUM> is navigated to the return URL. The user may be required to navigate through a number of pages to get to the web page corresponding to the URL component <NUM> that was listed in the original URL <NUM>. In some cases, for instance, when the URL component <NUM> is embedded in multiple pages, the navigation through the web pages may consume a great deal of time and may cause the processor <NUM> to consume additional resources while the user is navigating through the pages.

As a result, omission of the URL component <NUM> from the return URL during the authentication process when a proxy server <NUM> is implemented may cause inefficiencies, particularly with respect to processor <NUM> resource and energy consumption. According to examples, and as discussed herein, the processor <NUM> may generate a modified URL <NUM> that may include both the suffix domain and the URL component <NUM> such that the web browser <NUM> may navigate to the web page <NUM> corresponding to the intended URL component <NUM> following redirection to the identity provider <NUM> by the proxy server <NUM>.

As shown in <FIG>, the memory <NUM> may have stored thereon machine-readable instructions <NUM>-<NUM> that the processor <NUM> may execute. Although the instructions <NUM>-<NUM> are described herein as being stored on the memory <NUM> and may thus include a set of machine-readable instructions, the apparatus <NUM> may include hardware logic blocks that may perform functions similar to the instructions <NUM>-<NUM>. For instance, the processor <NUM> may include hardware components that may execute the instructions <NUM>-<NUM>. In other examples, the apparatus <NUM> may include a combination of instructions and hardware logic blocks to implement or execute functions corresponding to the instructions <NUM>-<NUM>. In any of these examples, the processor <NUM> may implement the hardware logic blocks and/or execute the instructions <NUM>-<NUM>. As discussed herein, the apparatus <NUM> may also include additional instructions and/or hardware logic blocks such that the processor <NUM> may execute operations in addition to or in place of those discussed above with respect to <FIG>.

The processor <NUM> may execute the instructions <NUM> to identify a navigation event responsive to a URL <NUM> being entered into an address bar <NUM> of a web browser <NUM>. As discussed herein, the URL <NUM> may include a domain and a URL component <NUM>. The processor <NUM> may track the web browser <NUM> to determine when the URL <NUM> is entered into the address bar <NUM>, for instance, through a plug in and/or extension installed on the web browser <NUM>. In addition, the navigation event may be any type of event in which the URL <NUM> is added to the address bar <NUM>. In some examples, the processor <NUM> may determine whether the identified navigation event is a predefined type of event. In these examples, based on a determination that the identified navigation event is a predefined type of event, the processor <NUM> may store the URL <NUM>, for instance, in a data store <NUM>. The data store <NUM> may be a Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, or the like. However, based on a determination that the identified navigation event is not the predefined type of event, the processor <NUM> may not store the URL <NUM> and/or may discard the URL <NUM>. In addition, the web browser <NUM> may navigate to the URL <NUM> or the web browser <NUM> may be redirected by a proxy server <NUM> as discussed herein.

The predefined type of event may include an event controlled by the user, for instance, the user typed the URL <NUM> into the address bar <NUM>, pasted the URL <NUM> into the address bar <NUM>, followed a link (e.g., from an email, a bookmark, or the like) that caused the URL to be entered into the address bar, and/or the like. According to examples, an event may not qualify as a predefined type of event if the user did not control the event, for instance, when the event is a redirect to the URL <NUM> by an application (e.g., by a javascript that automatically redirects to the URL <NUM>), and/or the like.

The processor <NUM> may execute the instructions <NUM> to determine whether the web browser <NUM> received an instruction to navigate to a return URL. As discussed herein, the return URL may include a suffix domain for a proxy, e.g., a proxy server <NUM>, and may not include the URL component <NUM> that is listed in the URL <NUM>, which may also be referenced herein as the original URL <NUM>. As also discussed herein, a proxy server <NUM> may receive the request to access the web page <NUM> corresponding to the URL <NUM> and may append a suffix domain to the URL <NUM>. The proxy server <NUM> may also redirect the request to an identity provider <NUM>, which may authenticate the user based on information that the user may have inputted. If authenticated, the identity provider <NUM> may return information, e.g., a token or other item that a service provider of the web page <NUM> corresponding to the URL <NUM> may use to grant the user access to resources on the web page <NUM>. However, as the return URL may not include the URL component <NUM> that was included in the URL <NUM>, when the proxy server <NUM> sends the return URL to the apparatus <NUM>, the web browser <NUM> may navigate to a landing page of the return URL instead of the page corresponding to the URL component <NUM> that was listed in the URL <NUM>.

In some examples, the processor <NUM> may determine whether the request was redirected to a predefined identity provider. That is, for instance, the processor <NUM> may maintain a list of predefined identity providers. An administrator or other entity may determine which identity providers are included in the list of the predefined identity providers and may update that list over time. In these examples, the processor <NUM> may determine whether the identity provider <NUM> to which the request was redirected matches one of the predefined identity providers in the list of predefined identity providers. In addition, the processor <NUM> may make the determination as to whether the web browser <NUM> received an instruction to navigate to a return URL based on a determination that the web browser <NUM> navigated to a predefined identity provider <NUM> included in the list of predefined identity providers.

In some examples, the processor <NUM> may determine whether the web browser <NUM> navigated to the predefined identity provider within a predefined number of redirects. The predefined number of redirects may be defined by an administrator or other entity and may be counted from when the web browser <NUM> initially attempted to navigate to the URL <NUM>. By way of particular example, the predefined number of redirects may be <NUM>, although the predefined number may be any number. In these examples, the processor <NUM> may make the determination as to whether the web browser <NUM> received the instruction to navigate to the return URL based on a determination that the web browser <NUM> navigated to a predefined identity provider included in the list of predefined identity providers within the predefined number of redirects.

However, in instances in which the request was redirected to an identity provider that is not on the list of predefined identity providers and/or the web browser <NUM> did not navigate to the predefined identity provider within the predefined number of redirects, the processor <NUM> may not determine whether the web browser <NUM> received the instruction to navigate to the return URL. Instead, the processor <NUM> may not intervene and/or may enable the web browser <NUM> to navigate to the web page corresponding to the return URL. In other words, the web browser <NUM> may navigate to a landing page of the return URL.

The processor <NUM> may execute the instructions <NUM> to, based on a determination that the web browser <NUM> received the instruction to navigate to the return URL, generate a modified URL <NUM> by appending the suffix domain to the URL <NUM>. In other words, the processor <NUM> may append the suffix domain to the original URL <NUM> to generate the modified URL, which may restore context of the URL <NUM> for the proxy, e.g., the proxy server <NUM>. In keeping with the example discussed above, the processor <NUM> may generate the modified URL to be http://www. suffixproxy. com/URLcomponent. In this regard, the modified URL may include the domain of the original URL <NUM>, the suffix domain of the proxy server <NUM>, and the URL component <NUM> of the original URL <NUM>. As discussed herein, the URL <NUM> may have been stored in the data store <NUM> and the processor <NUM> may retrieve the URL <NUM> from the data store <NUM>.

The processor <NUM> may execute the instructions <NUM> to navigate the web browser <NUM> to the modified URL <NUM>. As the modified URL <NUM> may include the URL component <NUM> from the original URL <NUM>, the web browser <NUM> may be directed to the web page <NUM> corresponding to the URL component <NUM> identified in the original URL <NUM>. As discussed herein, doing so may reduce processor <NUM> resource and energy consumption.

Various manners in which the processor <NUM> of the apparatus <NUM> may operate are discussed in greater detail with respect to the methods <NUM> and <NUM> respectively depicted in <FIG> and <FIG>. Particularly, <FIG> and <FIG>, respectively, depict flow diagrams of methods <NUM> and <NUM> for navigating a web browser <NUM> to a modified URL, in which the modified URL may include a suffix domain and a URL component <NUM> included in an original URL, in accordance with embodiments of the present disclosure. It should be understood that the methods <NUM> and <NUM> may include additional operations and that some of the operations described therein may be removed and/or modified without departing from the scope of the methods <NUM> and <NUM>. The descriptions of the methods <NUM> and <NUM> are made with reference to the features depicted in <FIG> and <FIG> for purposes of illustration.

With reference first to <FIG>, at block <NUM>, the processor <NUM> may determine that a URL <NUM> for a destination page (e.g., web page <NUM>) has been entered into an address bar <NUM> of a web browser <NUM>. As discussed herein, a plug-in or extension may have been installed on the web browser <NUM> and may determine when the URL <NUM> has been entered into the address bar <NUM>. The URL <NUM> may have a domain and a URL component <NUM> (subdirectory) as noted in the following example URL <NUM> http://www. com/subdirectory. An example of a URL <NUM> that includes a query string ("lang") and a fragment part ("section2") is: "https://xyz. com/sample/help. html?lang=US#section2.

At block <NUM>, the processor <NUM> may determine whether the web browser <NUM> navigated to a predefined identity provider <NUM> through a proxy server <NUM>. As discussed herein, the proxy server <NUM> may redirect the web browser <NUM> to an identity provider <NUM> when a user of the web browser <NUM> is to be authenticated prior to being granted access to the web page <NUM> corresponding to the URL <NUM>. In addition, the identity provider <NUM> may be a predefined identity provider if the identity provider <NUM> is on a list of predefined identity providers.

Based on a determination that the web browser <NUM> did not navigate to a predefined identity provider, the web browser <NUM> may navigate to a return URL at block <NUM>. That is, for instance, when a proxy server <NUM> functions to handle communications to and from the web browser <NUM>, a suffix domain may be added to the URL <NUM> as discussed herein. In these instances, the web browser <NUM> may navigate to the return URL, which may include the domain of the URL <NUM> and a domain of the suffix domain.

However, based on a determination that the web browser <NUM> navigated to the predefined identity provider <NUM>, at block <NUM>, the processor <NUM> may determine whether the web browser <NUM> received an instruction to navigate to a return URL instead of the URL <NUM>. The return URL may include a suffix domain but may not include the URL component <NUM> as discussed herein.

Based on a determination that the web browser <NUM> did not receive the instruction to redirect to the return URL, at block <NUM>, the web browser <NUM> may navigate to the URL <NUM>. That is, for instance, a proxy server <NUM> may not have added the suffix domain to the URL <NUM> and thus, the web browser <NUM> may navigate to the URL <NUM>, e.g., the web page <NUM> corresponding to the subdirectory listed in the URL <NUM>.

However, at block <NUM>, based on a determination that the web browser <NUM> did receive the instruction to navigate to the return URL, the processor <NUM> may insert the suffix domain of the return URL into the URL <NUM> to generate a modified URL. In keeping with one of the examples discussed above, the processor <NUM> may generate the modified URL to be http://www. suffixproxy. com/subdirectory. In this regard, the modified URL may include the domain of the original URL <NUM>, the suffix domain of the proxy server <NUM>, and the URL component <NUM> of the original URL <NUM>. As discussed herein, the URL <NUM> may have been stored in the data store <NUM> and the processor <NUM> may retrieve the URL <NUM> from the data store <NUM>. In addition, at block <NUM>, the processor <NUM> may navigate the web browser <NUM> to the modified URL. In other words, the web browser <NUM> may navigate to the web page <NUM> corresponding to the URL component <NUM>.

Turning now to <FIG>, at block <NUM>, the processor <NUM> may determine that a URL <NUM> for a destination page (e.g., web page <NUM>) has been entered into an address bar <NUM> of a web browser <NUM>. At block <NUM>, the processor <NUM> may determine whether the entry of the URL <NUM> is a predefined type of entry. Based on a determination that the entry of the URL <NUM> is not a predefined type of entry, at block <NUM>, the web browser <NUM> may navigate to a return URL. However, based on a determination that the entry of the URL <NUM> is a predefined type of entry, the processor <NUM> may store the URL <NUM> in a data store <NUM>.

At block <NUM>, the processor <NUM> may determine whether the web browser <NUM> navigated to a predefined identity provider <NUM> within a predefined number of redirects. Based on a determination that the web browser <NUM> did not navigate to the predefined identity provider or did not navigate to the predefined identity provider within the predefined number of redirects, at block <NUM>, the web browser <NUM> may navigate to the return URL.

However, based on a determination that the web browser <NUM> navigated to the predefined identity provider within the predefined number of redirects, at block <NUM>, the processor <NUM> may determine whether the web browser <NUM> received an instruction to navigate to a return URL instead of the URL <NUM>. The return URL may include a suffix domain and may not include the URL component <NUM> from the original URL <NUM> as discussed herein.

Based on a determination that the web browser <NUM> did not receive the instruction to navigate to the return URL, at block <NUM>, the web browser <NUM> may navigate to the URL <NUM>. However, at block <NUM>, based on a determination that the web browser <NUM> did receive the instruction to navigate to the return URL, the processor <NUM> may insert the suffix domain of the return URL into the URL <NUM> to generate a modified URL. In addition, at block <NUM>, the processor <NUM> may navigate the web browser <NUM> to the modified URL, e.g., to a web page <NUM> corresponding to the URL component <NUM> listed in the original URL <NUM>.

Some or all of the operations set forth in each of the methods <NUM> and <NUM> may be included as utilities, programs, or subprograms, in any desired computer accessible medium. In addition, each of the methods <NUM> and <NUM> may be embodied by computer programs, which may exist in a variety of forms both active and inactive. For example, they may exist as machine-readable instructions, including source code, object code, executable code or other formats. Any of the above may be embodied on a non-transitory computer readable storage medium.

Examples of non-transitory computer readable storage media include computer system RAM, ROM, EPROM, EEPROM, and magnetic or optical disks or tapes. It is therefore to be understood that any electronic device capable of executing the above-described functions may perform those functions enumerated above.

Turning now to <FIG>, there is shown a block diagram of a computer-readable medium <NUM> that may have stored thereon computer-readable instructions for navigating a web browser <NUM> to a modified URL, in which the modified URL may include a suffix domain and a URL component <NUM> to cause the web browser to navigate to a web page corresponding to the URL component <NUM>, in accordance with an embodiment of the present disclosure. It should be understood that the computer-readable medium <NUM> depicted in <FIG> may include additional instructions and that some of the instructions described herein may be removed and/or modified without departing from the scope of the computer-readable medium <NUM> disclosed herein. The computer-readable medium <NUM> may be a non-transitory computer-readable medium, in which the term "non-transitory" does not encompass transitory propagating signals.

The computer-readable medium <NUM> may have stored thereon computer-readable instructions <NUM>-<NUM> that a processor, such as the processor <NUM> depicted in <FIG> and <FIG>, may execute. The computer-readable medium <NUM> may be an electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. The computer-readable medium <NUM> may be, for example, Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like.

The processor may fetch, decode, and execute the instructions <NUM> to identify a navigation event responsive to a uniform resource locator (URL) <NUM> being entered into an address bar <NUM> of a web browser <NUM>, the URL <NUM> having a domain and a URL component <NUM>. The processor may fetch, decode, and execute the instructions <NUM> to determine whether the web browser <NUM> received an instruction to navigate to a return URL instead of the URL <NUM>. As discussed herein, the return URL may include a suffix domain and may not include the URL component <NUM> from the URL <NUM>. The processor may fetch, decode, and execute the instructions <NUM> to, based on a determination that the web browser <NUM> received the instruction to navigate to the return URL, generate a modified URL by inserting the suffix domain from the return URL into the URL <NUM> while maintaining the URL component <NUM> from the URL <NUM>. In addition, the processor may fetch, decode, and execute the instructions <NUM> to navigate the web browser <NUM> to a web page corresponding to the subdirectory included in the modified URL.

As discussed herein, the processor may also determine whether the identified navigation event is a predefined type of event, in which the predefined type of event may include a typing of the URL <NUM> into the address bar <NUM>, a copying of the URL <NUM> into the address bar <NUM>, and/or a following of a link that causes the URL <NUM> to be entered into the address bar <NUM>. In addition, the processor may store the URL <NUM> in a data store <NUM> based on the identified navigation event being the predefined type of event.

As also discussed herein, the processor may determine whether the web browser <NUM> navigated to a predefined identity provider and may determine whether the web browser <NUM> received the instruction to navigate to the return URL based on a determination that the web browser <NUM> navigated to the predefined identity provider <NUM>. In addition or alternatively, the processor may determine whether the web browser <NUM> navigated to the predefined identity provider <NUM> within a predefined number of redirects and may determine whether the web browser <NUM> received the instruction to navigate to the return URL based on a determination that the web browser <NUM> navigated to the predefined identity provider <NUM> within the predefined number of redirects.

Although described specifically throughout the entirety of the instant disclosure, representative examples of the present disclosure have utility over a \wide range of applications, and the above discussion is not intended and should not be construed to be limiting, but is offered as an illustrative discussion of aspects of the disclosure.

Claim 1:
An apparatus (<NUM>) comprising:
a processor (<NUM>); and
a memory (<NUM>) on which is stored machine-readable instructions (<NUM>, <NUM>, <NUM>, <NUM>) that cause the processor (<NUM>) to:
identify a navigation event responsive to a uniform resource locator, URL, (<NUM>) being entered into an address bar (<NUM>) of a web browser (<NUM>), the URL (<NUM>) having a domain and a URL component (<NUM>);
determine whether the web browser (<NUM>) received an instruction to navigate to a return URL, wherein the return URL includes a suffix domain for a proxy (<NUM>) and does not include the URL component (<NUM>) from the URL (<NUM>); and
based on a determination that the web browser (<NUM>) received the instruction to navigate to the return URL,
generate a modified URL (<NUM>) by appending the suffix domain to the URL (<NUM>) to restore context of the URL (<NUM>) for the proxy (<NUM>); and
navigate the web browser (<NUM>) to the modified URL (<NUM>).