Try OpenEdge Now
skip to main content
New Information
Progress Application Server for OpenEdge : Authentication with OAuth2 and JWT : OAuth2 Concepts and Terms
 

OAuth2 Concepts and Terms

OAuth (Open Authorization) is a standard framework that allows login access to third-party websites and applications without exposing user account credentials and information. Currently, OAuth2 is the latest version of that standard.
OAuth2, implemented correctly, provides a medium level of security for a broad range of web application architectures, including web browsers, mobile devices, browser-based client applications (such as JavaScript), and B2B client applications.
This section will introduce core OAuth2 concepts and terms.

Actors

OAuth2 defines the following actors to perform specific operations and to interact to create a secure authorization framework:
Actor
Description
OpenEdge Examples
Resource Owner
A user who is the owner of data stored, accessed through, and protected by, a Resource Server. As data owners, they can authorize a Client to access and perform certain operations on data stored on a Resource Server.
End-users
Client
An application that uses an access token from an Authorization Server to gain access to the Resource Owner data that is hosted by a Resource Server.
Each Client is defined by a unique ID ( client_id ) that is registered with an Authorization Server, inserted into an OAuth2 Access Token, and validated by the Resource Server.
JavaScript client applications
Resource Server
The web server data service that hosts and authorizes Client access to a Resource Owner’s data based on an Access Token's client_id, user-identity and granted scope.
ABL business applications (Spring OAuth2 in OEABL web applications)
Authorization Server
A server that validates a Resource Owner's credentials. Maintaining a list of registered Clients and Resource Servers, it calls on an Authentication Server for identity verification. If authorization is successful, it issues access tokens to a Client on behalf of the Resource Owner.
N/A (3rd party products)
User-agent
A web browser, or some other type of framework that hosts Client applications.
Browsers, mobile devices, Node js, etc.
Authentication Server
A server, undefined in the standard, that is used by an Authorization Server to authenticate the Resource Owner's identity. Oncer the Resource Owner's identity is authenticated, the Authorization Server can continue its authorization process for issuing an access token.
N/A (3rd party products associated with the Authorization Server )

Flows and Grant Types

AFlow represents an exchange of one or more HTTP messages between the various OAuth2 Actors. Each OAuth2 Flow has a name defined in the standard as a Grant Type. The Grant Type is configured and implemented in a Client and a Authorization Server, and may be included in an access token for validation by a Resource Server.
The Grant Types currently specified include:
*Authorization (Code) Grant
A flow used by confidential clients. The Client interacts with the Resource Owner and interfaces with an Authentication Server via a User-agent. The Resource Owner authenticates to an Authorization Server who issues an Authorization code to the Client. The Client then uses the Authorization Server to exchange its Authorization code for an access token it can use to access the Resource Server on behalf of the Resource Owner
*Resource Owner Password (Credentials) Grant
A flow used in cases where the Resource Owner has a trust relationship with the Client. An example of this type of relationship is a user (Resource Owner) with a mobile device (Client). In this flow, the Client and Resource Owner work together to authenticate to an Authorization Server who issues an access token to the Client. The Client manages the access token and uses it to access the Resource Owner’s data on the Resource Server.
*Client Credentials Grant
A flow that is used only when the Client is a trusted application. For example the Client may be a partner company’s business application who is also a Resource Owner. This is a very simple flow where the Client authenticates to the Authorization Server using its own user-id and password and receives an access token in response. The Client uses the access token to access data on a Resource Server
.
*Implicit Grant
A flow often used by a public Client. In this flow, the Client initiates the flow by directing a User-agent to an Authorization Server who interacts with and authenticates the Resource Owner. If the Resource Owner grants the Client access to their data, the User-agent is sent an access token it can use on behalf of the Client when the Client accesses the Resource Server.