This protocol allows a piece of software, the client instance, to request delegated authorization to Resource Servers and to request direct information. This delegation is facilitated by an Authorization Server usually on behalf of a Resource Owner. The end-user operating the software may interact with the Authorization Server to authenticate, provide consent, and authorize the request.
The process by which the delegation happens is known as a grant, and GNAP allows for the negotiation of the grant process over time by multiple parties acting in distinct roles.
This protocol solves many of the same use cases as OAuth 2.0 RFC 6749, OpenID Connect (OIDC), and the family of protocols that have grown up around that ecosystem. However, GNAP is not an extension of OAuth 2.0 and is not intended to be directly compatible with OAuth 2.0. GNAP seeks to provide functionality and solve use cases that OAuth 2.0 cannot easily or cleanly address. Even so, GNAP and OAuth 2.0 will exist in parallel for many deployments, and considerations have been taken to facilitate the mapping and transition from legacy systems to GNAP. Some examples of these can be found in Appendix C.5.
Example: a client can be a mobile application, a web application, etc.
Note: this specification differentiates between a specific instance (the client instance, identified by its unique key) and the software running the instance (the client software). For some kinds of client software, there could be many instances of that software, each instance with a different key.
Note: the act of granting or denying an operation may be manual (i.e. through an interaction with a physical person) or automatic (i.e. through predefined organizational rules).
Note: that Natural Person MAY or MAY NOT be the same entity as the Resource Owner.
Note: an Access Token can be first issued to a client instance (requiring authorization by the Resource Owner) and subsequently rotated.
Note: the Resource Owner defines and maintains the rights and attributes associated to the protected resource, and might temporarily delegate some set of those privileges to an end-user. This process is referred to as privilege delegation.
Note: to avoid complex sentences, the specification document may simply refer to resource instead of protected resource.