An authentication scheme may be utilized for a single sign-on operation between servers. One or more servers receive a data request directed to a disparate server. A root certificate (e.g., an x.509 root certificate) is loaded for accessing the disparate server. A user certificate is dynamically generated for identifying a logged-in user. The user certificate is signed with the root certificate and sent to the disparate server for binding with the data request. The data request is sent to the disparate server for authentication using the user certificate. The disparate server accesses a mapping table to map a subject name in the user certificate. When an entry for the logged-in user is found in the mapping table, data operations are enabled between the servers. An open web protocol response containing the requested data is then received from the disparate server.
|
10. A system for utilizing x.509 authentication for a single sign-on between disparate servers, comprising:
an sap server comprising at least a memory storage device and a processor; and
a plurality of sharepoint servers in communication with the sap server, at least one of the plurality of sharepoint servers being operative to:
receive a request for data stored on the sap server;
retrieve an x.509 root certificate for accessing the sap server via a single sign-on operation;
dynamically generate a user certificate for identifying a currently logged-in user;
sign the user certificate with the x.509 root certificate;
send the user certificate to the sap server for binding with the request for data;
send the request for data to the sap server for authentication using the user certificate, the authentication comprising accessing a mapping table for mapping a subject name in the user certificate to a user of the sap server; and
enable the single sign-on between the plurality of sharepoint servers and the sap server, upon an entry being found in the mapping table for the currently logged-in user, the found entry enabling data operations to occur between the currently logged-in user and the sap server.
1. A computer-implemented method of utilizing an authentication scheme for a single sign-on between disparate servers, comprising:
receiving, by a first server, a request for data stored on a second server;
retrieving, by the first server, a root certificate for accessing the second server via a single sign-on operation;
dynamically generating, by the first server, a user certificate for identifying a currently logged-in user on the first server;
signing, by the first server, the user certificate with the root certificate;
sending, by the first server, the user certificate to the second server for binding with the request for data;
sending, by the first server, the request for data to the second server for authentication using the user certificate, the authentication comprising accessing a mapping table for mapping a subject name in the user certificate to a user of the second server;
enabling, by the first server, the single sign-on with the second server, upon an entry being found in the mapping table for the currently logged-in user, the found entry enabling data operations to occur between the currently logged-in user and the second server; and
receiving, by the first server, an open web protocol response containing the requested data from the second server.
16. A computer-readable storage device comprising computer executable instructions which, when executed on a computer, will cause the computer to perform a method of utilizing x.509 authentication for a single sign-on between a plurality of sharepoint servers and an sap server, comprising:
receiving, by the plurality of sharepoint servers, a request for data stored on the sap server;
retrieving a trusted x.509 root certificate for accessing the sap server via a single sign-on operation, wherein the trusted x.509 root certificate is trusted by the plurality of sharepoint servers and the sap server;
dynamically generating a user certificate for identifying a currently logged-in user;
signing the user certificate with the trusted x.509 root certificate;
sending the user certificate to the sap server for binding with the request for data;
sending the request for data to the sap server for authentication using the user certificate, the authentication comprising accessing a mapping table for mapping a subject name in the user certificate to a user of the sap server;
enabling the single sign-on with the sap server, upon an entry being found in the mapping table for the currently logged-in user, the found entry enabling data operations to occur between the currently logged-in user and the sap server; and
receiving an open protocol data (OData) response containing the requested data from the sap server.
2. The computer-implemented method of
3. The computer-implemented method of
4. The computer-implemented method of
5. The computer-implemented method of
6. The computer-implemented method of
7. The computer-implemented method of
8. The computer-implemented method of
9. The computer-implemented method of
11. The system of
12. The system of
13. The system of
14. The system of
15. The system of
17. A computer-readable storage device of
18. A computer-readable storage device of
19. A computer-readable storage device method of
20. A computer-readable storage device of
|
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
Today, many business and government organizations utilize enterprise software for performing various business functions and providing services. Business functions may include order processing, procurement, production scheduling, customer information management, energy management, and accounting. Services provided by enterprise software are typically business-oriented tools such as online shopping and online payment processing, interactive product catalogue, automated billing systems, security, enterprise content management, IT service management, customer relationship management, enterprise resource planning, business intelligence, project management, collaboration, human resource management, manufacturing, enterprise application integration, and enterprise forms automation. Enterprise software is typically hosted on servers and provides simultaneous services to a large number of users, typically over a computer network. This is in contrast to a single-user application that is executed on a user's personal computer and serves only one user at a time. Enterprise software which is utilized by many business and government organizations includes the SAP application from SAP AG CORPORATION of Walldorf, Germany.
Enterprise software is often integrated with web application platforms hosted by separate servers to enable users to remotely access data hosted by enterprise software servers by initiating a “sign-on” operation (i.e., a user name login) from a web application platform server to an enterprise software server. Once such web application platform may include the SHAREPOINT SERVER application from MICROSOFT CORPORATION of Redmond, Wash. One known problem associated with accessing data between web application platform servers and enterprise software servers is associated with the authentication required for performing a single sign-on operation to enable all of the various security settings and data access privileges required for accessing data on enterprise software servers. Previous solutions for solving the aforementioned problem have included the use of Security Assertion Markup Language (“SAML”) token authentication with the open data protocol (“OData”). OData is utilized by some web application platform software and enterprise application software applications for querying and updating data over Hypertext Transfer Protocol (“HTTP”), including the SHAREPOINT SERVER application software and the SAP application software. However, OData does not prescribe any authentication method when used with SAML. It is with respect to these considerations and others that the various embodiments of the present invention have been made.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended as an aid in determining the scope of the claimed subject matter.
Embodiments are provided for utilizing an authentication scheme to facilitate a single sign-on operation between disparate servers. One or more servers (e.g., a SHAREPOINT server) receives a data request directed to a disparate server (e.g., an SAP server). A root certificate (e.g., an X.509 root certificate) is loaded for accessing the disparate server via a single sign-on operation. A user certificate is dynamically generated for identifying a logged-in user. It should be understood however, that in alternative embodiment, the user certificate may be pre-generated during configuration and stored in a secure store service. Following the generation of the user certificate, the user certificate is signed with the root certificate and sent to the disparate server for binding with the data request. The data request is sent to the disparate server for authentication using the user certificate. The disparate server accesses a mapping table to map a subject name in the user certificate. When an entry for the logged-in user is found in the mapping table, data operations are enabled between the servers. An open web protocol response containing the requested data is then received from the disparate server.
These and other features and advantages will be apparent from a reading of the following detailed description and a review of the associated drawings. It is to be understood that both the foregoing general description and the following detailed description are illustrative only and are not restrictive of the invention as claimed.
Embodiments are provided for utilizing an authentication scheme to facilitate a single sign-on operation between disparate servers. One or more servers (e.g., a SHAREPOINT server) receives a data request directed to a disparate server (e.g., an SAP server). A root certificate (e.g., an X.509 root certificate) is loaded for accessing the disparate server via a single sign-on operation. A user certificate is dynamically generated for identifying a logged-in user. Then, the user certificate is signed with the root certificate and sent to the disparate server for binding with the data request. The data request is sent to the disparate server for authentication using the user certificate. The disparate server accesses a mapping table to map a subject name in the user certificate. It should be understood that, prior to consulting the mapping table, the disparate server may verify that the user certificate is valid. Since the disparate server was previously configured to know about the root certificate, the disparate server may use this knowledge to validate that the data request came from a trusted originating server. When an entry for the logged-in user is found in the mapping table, data operations are enabled between the servers. An open web protocol response containing the requested data is then received from the disparate server.
In the following detailed description, references are made to the accompanying drawings that form a part hereof, and in which are shown by way of illustrations specific embodiments or examples. These embodiments may be combined, other embodiments may be utilized, and structural changes may be made without departing from the spirit or scope of the present invention. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims and their equivalents.
Referring now to the drawings, in which like numerals represent like elements through the several figures, various aspects of the present invention will be described.
In accordance with an embodiment, the servers 10 and 30 may each be utilized by administrators 2 and 4 (e.g., a SHAREPOINT administrator and an SAP administrator). In particular, the administrator 2 may utilize the application 12 to initiate the creation of a root certificate 6 and the communication of the root certificate 6 to the administrator 4. The administrator 4 may initiate the storing of the root certificate 6 into a certificate trust store 32 on the server 30. In accordance with an embodiment, the root certificate 6 may comprise an X.509 root certificate. As known to those skilled in the art, X.509 is an ITU-T standard for public key infrastructure (“PKI”) and privilege management infrastructure (“PMI”). X.509 may specify, among other things, standard formats for public key certificates, certificate revocation lists, attribute certificates, and a certification path validation algorithm. In an X.509 system, a certification authority may issue a certificate which binds a public key to a particular distinguished name or to an alternative name such as an e-mail address or a DNS-entry. It should be understood that the server 10 may also be utilized by end user 70 for retrieving requested data. For example, in accordance with an embodiment, the end user 70 may utilize browser application 72 to log-in to a SHAREPOINT server for data retrieval.
The server 10 may include an application 12, application configuration application program interfaces (“APIs”) 14, a secure store service 16, an application open data protocol (“Odata”) extension provider 18 and a business connectivity services (“BCS”)/hybrid remoter 20. In accordance with an embodiment, the application 12 may comprise the DUET ENTERPRISE software jointly developed by MICROSOFT CORPORATION of Redmond, Wash. and SAP AG CORPORATION of Walldorf, Germany. As is known to those skilled in the art, DUET ENTERPIRSE software blends SAP and SHAREPOINT functionality by combining collaboration and productivity with business data and processes. As will be described in greater detail below with respect to
The application configuration APIs 14 may be utilized for receiving the root certificate 6 created by the application 12 and to store the root certificate 6 in the secure store service 16. The application OData extension provider 18 is a software plug-in for the BCS/Hybrid remoter 20. The application OData extension provider 18 may be configured receive the root certificate 6 from the secure store service 16 in addition to a domain user. The OData extension provider 18 may also be configured to output a dynamically created user certificate 8 for enabling single sign-on operations with the server 30 (the details of which will be discussed below with respect to
The BCS/Hybrid remoter 20 may be utilized to call the application OData extension provider 18 to retrieve the dynamically created user certificate 8 and the user certificate subject name for sending to the server 30. It should be understood that, in accordance with an embodiment, all authentication and data exchange (including calls) between the server 10 and the server 30 occur over Hypertext Transfer Protocol Secure (“HTTPS”).
The server 30 may include the certificate trust store 32, a user mapping table 34, OData 36 and an active directory (“AD”) import tool 38. As discussed above, the certificate trust store 32 may be utilized to store the root certificate 6 received from the server 10. The user mapping table 34 may comprise user mappings for users of the server 10. The user mappings may comprise a list of user certificate 8 subject names (along with associated domains) for users of the server 10 (i.e., external IDs) and a corresponding list of user names (i.e., SAP IDs) in a format compatible for accessing the various functions and services provided by the server 30. It should be understood that the aforementioned user mappings may be imported into the mapping table 34 using the AD import tool 38 which, in turn, may retrieve the user mappings from the active directory 40. The user mapping table 34 will be described in greater detail below with respect to
The routine 300 begins at operation 305, where the server 10 receives a data request directed to the server 30. For example, a user of a SHAREPOINT server may wish to access company human resources data stored on an SAP gateway server. Upon receiving the data request, the server 10 may prepare to forward the request to the server 30 as part of a single-sign on operation which will be described in detail below.
From operation 305, the routine 300 continues to operation 310, where the server 10 may load a root certificate for accessing the server 30 via a single sign-on operation. In particular, the X.509 root certificate 6 may be retrieved from the secure store service 16 on the server 10. It should be understood that the root certificate is trusted by both the server 10 and the server 30.
From operation 310, the routine 300 continues to operation 315, where the server 10 may dynamically generate a user certificate for identifying a currently logged-in user. In particular, the application 12 may utilize the application OData extension provider 18 to generate the X.509 user certificate 8 for identifying users a currently logged-in on-premises user of the server 10 and/or a currently logged-in online user of the server 10. Thus, it should be understood that the server 10 may provide support for both multiple domain users and mixed mode environments (e.g., SHAREPOINT on-premises and SHAREPOINT online). For example, in dynamically generating the user certificate 8, a subject name for a currently logged-in on-premises user may be specified in a fixed format (e.g., CN=domain/username or CN=username@domain.com).
From operation 315, the routine 300 continues to operation 320, where the server 10 may sign the dynamically generated user certificate with the root certificate. For example, the X.509 user certificate 8 may be signed with the X.509 root certificate 6.
From operation 320, the routine 300 continues to operation 325, where the server 10 may send the dynamically generated user certificate to the server 30 for binding with the data request received at operation 305. In particular, the application OData extension provider 18 may send the X.509 user certificate 8 to the BCS/Hybrid remoter 20 for binding the X.509 user certificate 8 to an outgoing HTTPS request directed to the OData 36 on the server 30.
From operation 325, the routine 300 continues to operation 330, where the server 10 may send the data request for authentication using the dynamically generated user certificate. In particular, the BCS/Hybrid remoter 20 may bind the X.509 user certificate 8, received from the OData extension provider 18, to an outgoing HTTPS request directed to the OData 36 on the server 30. It should be understood that once the OData 36 receives the aforementioned HTTPS request, a trust chain of the X.509 user certificate 8 may be authenticated by the server 30 accessing the mapping table 34. In particular, the server 30 may access the mapping table 34 to map a subject name in the X.509 user certificate 8 to an SAP user. It should be understood that the authentication may fail if the X.509 root certificate 6 has expired or is not trusted. Under these circumstances, an error code (e.g., an HTTP 403 “Forbidden” error code) may be returned as the HTTP response from the server 30.
From operation 330, the routine 300 continues to operation 335, where the server 10 may enable a single sign-on for the currently logged-in user with the server 30 upon an entry being found in the mapping table for the currently logged-in user. In particular, upon the entry being found, a security context for the currently logged-in user is created on the sever 30 and subsequent data operations (e.g., SAP data operations) will occur with the aforementioned user context. Thus, for example, all SAP authorizations configured for an SAP user will apply. It should be understood that if an entry is not found, an error code (e.g., an HTTP 403 “Forbidden” error code) may be returned as the HTTP response from the server 30.
From operation 335, the routine 300 continues to operation 340, where the server 10 may receive a response containing the requested data from the server 30. In particular, the server 10 may receive an OData response containing requested SAP data from the server 30. It should be understood that if the data request was originally made from an online SHAREPOINT user, the OData response may be channeled via the BCS/Hybrid remoter 20 back to SHAREPOINT online. From operation 340, the routine 300 then ends.
The computing device 400 may have additional features or functionality. For example, the computing device 400 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, solid state storage devices (“SSD”), flash memory or tape. Such additional storage is illustrated in
Generally, consistent with various embodiments, program modules may be provided which include routines, programs, components, data structures, and other types of structures that may perform particular tasks or that may implement particular abstract data types. Moreover, various embodiments may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, automotive computing systems and the like. Various embodiments may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Furthermore, various embodiments may be practiced in an electrical circuit comprising discrete electronic elements, packaged or integrated electronic chips containing logic gates, a circuit utilizing a microprocessor, or on a single chip containing electronic elements or microprocessors. For example, various embodiments may be practiced via a system-on-a-chip (“SOC”) where each or many of the components illustrated in
Various embodiments, for example, may be implemented as a computer process (method), a computing system, or as an article of manufacture, such as a computer program product or computer readable media. The computer program product may be a computer storage media readable by a computer system and encoding a computer program of instructions for executing a computer process.
The term computer readable media as used herein may include computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information (such as computer readable instructions, data structures, program modules, or other data) in hardware. The system memory 404, removable storage 409, and non-removable storage 410 are all computer storage media examples (i.e., memory storage.) Computer storage media may include, but is not limited to, RAM, ROM, electrically erasable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store information and which can be accessed by the computing device 400. Any such computer storage media may be part of the computing device 400.
The term computer readable media as used herein may also include communication media. Communication media may be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” may describe a signal that has one or more characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared, and other wireless media.
Mobile computing device 550 incorporates output elements, such as display 590, which can display a graphical user interface (GUI). Other output elements include speaker 530 and LED light 580. Additionally, mobile computing device 550 may incorporate a vibration module (not shown), which causes mobile computing device 550 to vibrate to notify the user of an event. In yet another embodiment, mobile computing device 550 may incorporate a headphone jack (not shown) for providing another means of providing output signals.
Although described herein in combination with mobile computing device 550, in alternative embodiments may be used in combination with any number of computer systems, such as in desktop environments, laptop or notebook computer systems, multiprocessor systems, micro-processor based or programmable consumer electronics, network PCs, mini computers, main frame computers and the like. Various embodiments may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network in a distributed computing environment; programs may be located in both local and remote memory storage devices. To summarize, any computer system having a plurality of environment sensors, a plurality of output elements to provide notifications to a user and a plurality of notification event types may incorporate the various embodiments described herein.
Application 567 may be loaded into memory 562 and run on or in association with an operating system (“OS”) 564. The system 502 also includes non-volatile storage 568 within memory the 562. Non-volatile storage 568 may be used to store persistent information that should not be lost if system 502 is powered down. The application 567 may use and store information in the non-volatile storage 568. A synchronization application (not shown) also resides on system 502 and is programmed to interact with a corresponding synchronization application resident on a host computer to keep the information stored in the non-volatile storage 568 synchronized with corresponding information stored at the host computer. As should be appreciated, other applications may also be loaded into the memory 562 and run on the mobile computing device 550.
The system 502 has a power supply 570, which may be implemented as one or more batteries. The power supply 570 might further include an external power source, such as an AC adapter or a powered docking cradle that supplements or recharges the batteries.
The system 502 may also include a radio 572 (i.e., radio interface layer) that performs the function of transmitting and receiving radio frequency communications. The radio 572 facilitates wireless connectivity between the system 502 and the “outside world,” via a communications carrier or service provider. Transmissions to and from the radio 572 are conducted under control of OS 564. In other words, communications received by the radio 572 may be disseminated to the application 567 via OS 564, and vice versa.
The radio 572 allows the system 502 to communicate with other computing devices, such as over a network. The radio 572 is one example of communication media. The embodiment of the system 502 is shown with two types of notification output devices: LED 580 that can be used to provide visual notifications and an audio interface 574 that can be used with speaker 530 to provide audio notifications. These devices may be directly coupled to the power supply 570 so that when activated, they remain on for a duration dictated by the notification mechanism even though processor 560 and other components might shut down for conserving battery power. The LED 580 may be programmed to remain on indefinitely until the user takes action to indicate the powered-on status of the device. The audio interface 574 is used to provide audible signals to and receive audible signals from the user. For example, in addition to being coupled to speaker 530, the audio interface 574 may also be coupled to a microphone (not shown) to receive audible input, such as to facilitate a telephone conversation. In accordance with embodiments, the microphone may also serve as an audio sensor to facilitate control of notifications. The system 502 may further include a video interface 576 that enables an operation of on-board camera 540 (shown in
A mobile computing device implementing the system 502 may have additional features or functionality. For example, the device may also include additional data storage devices (removable and/or non-removable) such as, magnetic disks, optical disks, or tape. Such additional storage is illustrated in
Data/information generated or captured by the mobile computing device 550 and stored via the system 502 may be stored locally on the mobile computing device 550, as described above, or the data may be stored on any number of storage media that may be accessed by the device via the radio 572 or via a wired connection between the mobile computing device 550 and a separate computing device associated with the mobile computing device 550, for example, a server computer in a distributed computing network such as the Internet. As should be appreciated such data/information may be accessed via the mobile computing device 550 via the radio 572 or via a distributed computing network. Similarly, such data/information may be readily transferred between computing devices for storage and use according to well-known data/information transfer and storage means, including electronic mail and collaborative data/information sharing systems.
Various embodiments are described above with reference to block diagrams and/or operational illustrations of methods, systems, and computer program products. The functions/acts noted in the blocks may occur out of the order as shown in any flow diagram. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved.
While certain embodiments have been described, other embodiments may exist. Furthermore, although various embodiments have been described as being associated with data stored in memory and other storage mediums, data can also be stored on or read from other types of computer-readable media, such as secondary storage devices (i.e., hard disks, floppy disks, or a CD-ROM), a carrier wave from the Internet, or other forms of RAM or ROM. Further, the disclosed routine's operations may be modified in any manner, including by reordering operations and/or inserting or operations, without departing from the embodiments described herein.
It will be apparent to those skilled in the art that various modifications or variations may be made without departing from the scope or spirit of the embodiments described herein. Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice of the embodiments described herein.
Gupta, Ajay, Rastogi, Sudeep, Jayasankar, Shyam Sundar, Mantha, Diwakar
Patent | Priority | Assignee | Title |
9686266, | Nov 01 2012 | Microsoft Technology Licensing, LLC | Utilizing X.509 authentication for single sign-on between disparate servers |
Patent | Priority | Assignee | Title |
6275941, | Mar 28 1997 | Hiatchi, Ltd. | Security management method for network system |
7047404, | May 16 2000 | Surety, LLC; WORLDGATE MANAGEMENT, LLC | Method and apparatus for self-authenticating digital records |
20030196108, | |||
20080301784, | |||
EP2107757, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Oct 16 2012 | MANTHA, DIWAKAR | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 029230 | /0823 | |
Oct 23 2012 | GUPTA, AJAY | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 029230 | /0823 | |
Oct 23 2012 | RASTOGI, SUDEEP | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 029230 | /0823 | |
Oct 30 2012 | JAYASANKAR, SHYAM SUNDAR | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 029230 | /0823 | |
Nov 01 2012 | Microsoft Technology Licensing, LLC | (assignment on the face of the patent) | / | |||
Oct 14 2014 | Microsoft Corporation | Microsoft Technology Licensing, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 039025 | /0454 |
Date | Maintenance Fee Events |
Aug 08 2019 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Jun 19 2023 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Feb 23 2019 | 4 years fee payment window open |
Aug 23 2019 | 6 months grace period start (w surcharge) |
Feb 23 2020 | patent expiry (for year 4) |
Feb 23 2022 | 2 years to revive unintentionally abandoned end. (for year 4) |
Feb 23 2023 | 8 years fee payment window open |
Aug 23 2023 | 6 months grace period start (w surcharge) |
Feb 23 2024 | patent expiry (for year 8) |
Feb 23 2026 | 2 years to revive unintentionally abandoned end. (for year 8) |
Feb 23 2027 | 12 years fee payment window open |
Aug 23 2027 | 6 months grace period start (w surcharge) |
Feb 23 2028 | patent expiry (for year 12) |
Feb 23 2030 | 2 years to revive unintentionally abandoned end. (for year 12) |