0% found this document useful (0 votes)
10 views8 pages

OAuth Grant Types - English

The document explains the OAuth standard and its four grant types: Client Credentials, Resource Owner Password Credentials, Authorization Code, and Implicit. It details how confidential and public clients interact with the authorization server through front and back channels, and outlines the specific use cases for each grant type. The choice of grant type depends on the client type and the access token owner, with recommendations for their best usage scenarios.

Uploaded by

ahmed.nazmy90
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views8 pages

OAuth Grant Types - English

The document explains the OAuth standard and its four grant types: Client Credentials, Resource Owner Password Credentials, Authorization Code, and Implicit. It details how confidential and public clients interact with the authorization server through front and back channels, and outlines the specific use cases for each grant type. The choice of grant type depends on the client type and the access token owner, with recommendations for their best usage scenarios.

Uploaded by

ahmed.nazmy90
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 8

Do you wonder how participants or stakeholders

interact in the OAuth standard?

They do it by using grant types.

There are four grant types:

• Client Credentials

• Resource Owner

• Authorization Code

• And Implicit.

Each grant type has its own flow

to acquire an access token,

and these flows involve the interaction

of public or confidential clients.

We’ll learn more about the grant types in just a minute,

but first,

we’ll find out more about clients

and how they communicate.

The OAuth standard defines two types of clients:

Confidential and Public.

An example of a confidential client

is a web application running in a web server.

This type of application is able to protect the client key

and client secret.

On the other hand,

public clients aren’t able to keep client secrets.

Examples include Mobile apps

with a password embedded inside,

or JavaScript apps

running in the user’s browser.

These clients

can’t ensure the integrity of the client secret.


The client secret is prone to be hijacked

or reverse engineered.

Confidential and public clients

communicate with the authorization server

in two distinct ways:

via the front channel

and via the back channel.

The front channel involves interaction

between the user

and the authorization endpoint

through the user-agent.

Because it’s based on HTTP redirects,

all the request and response information

must be passed in the redirected URI

by using the GET method.

On the other hand,

the back channel involves direct communication

between the client

and token endpoint.

Because it’s not limited to HTTP redirects,

the token request includes parameters

and other information

as part of the body

of a POST request.

Now let’s take a look at the details

of grant types in OAuth.

The client credentials grant type

provides a client application

a way to access its own service account.


The client credentials are required

when the client requests an access token,

which allows the access

to the protected resources

under its control.

This grant type is used

when an application needs to access

or make service calls

to backend services

required to perform its work.

It’s only used by confidential clients.

Let’s see how this grant type

would be used in a possible scenario.

Here,

the client requests an access token

from the token endpoint

through a client authentication

with the authorization server.

Once the authorization server authenticates the client,

it issues an access token,

which is sent to the client application.

The next grant type

is the Resource Owner Password Credentials,

also known as

the username-password authentication flow.

It’s used when the user,

or resource owner,

has a trust relationship with the client.

The client must be capable

of obtaining the user’s credentials.


For example,

through an interactive form

on the front channel.

This flow is also used

to preserve backward compatibility

with old OAuth integrations.

Let’s see how this grant type

would be used in a possible scenario.

Here the resource owner

provides his username and password

to the client application.

Then the client application

uses the user credentials

to request an access token

from the authorization server.

The authorization server

authenticates the client

and receives the user credentials.

If the credentials are valid,

it issues an access token to the client application.

It can optionally

issue a refresh token as well.

The next grant type

is Authorization Code.

Like the previous grant type;

it also issues a Refresh Token.

Since the Authorization Code

is a redirection-based flow,

it’s suitable for clients


that are able to interact with user-agents,

like web browsers,

to receive incoming requests

from the authorization server.

It’s optimized for confidential clients.

Web applications

such as JavaScript apps

or third party clients,

without a trusted business relationship

with the API provider,

are common examples

that use this grant type.

Let's see how this works.

In this scenario,

the resource owner uses an application

to perform an action,

which requires authorization,

such as posting or logging in.

Then the client application,

through the user-agent,

redirects the user

to the authorization endpoint.

This URI is used by the authorization server

to redirect the user-agent

after granting,

or denying, the access.

Once the authorization server

authenticates the resource owner,

it redirects the user-agent back to the client,

by using the provided redirect URI.


The authorization code

is included as part of the redirect URI.

Before using the authorization code

to request an access token,

the client authenticates with the authorization server

including the redirection URI

used to retrieve the authorization code.

Finally,

the authorization server authenticates the client,

validates the authorization code,

and verifies that the included redirection URI

is the same URI that was used

when requesting the authorization code.

If everything is ok,

the authorization server issues an access token,

and optionally a refresh token.

The Implicit grant type

is similar to the Authorization Code grant type.

The main difference between these two

is that in the implicit grant type,

an access token is expected

instead of a code.

Then

the user-agent redirects the client

to the web-hosted client resource,

which returns a web page,

typically with a script

that accesses the full redirection URI

to extract the access token.


After the access token is extracted,

the user-agent passes it to the client.

This flow improves the responsiveness

and efficiency of some clients,

since it reduces the number of round trips

required to obtain an access token.

However,

it requires extra attention

to avoid the access token exposure

on the client side.

Because it doesn’t include a client secret

and authorization code,

this flow is mainly used by public clients.

With all of these grant types,

how do you know which one to implement?

Grant types are chosen

based on the access token owner

and the client type,

and whether they can keep secrets or not.

The best usage for Client Credentials grant type

is on B2B transactions and batch processes

without a Resource Owner.

The Resource Owner Credentials grant type

is preferable when you trust the Client App,

who’s in charge of handling

the resource owner credentials.

The Authorization Code grant type best usage

is when the client app

delegates the resource owner credentials

to the Authorization Server,


and consent is needed.

The best usage of the Implicit grant type

is when the client app

is a user-agent-based,

Mobile

or a Single Page Application.

To learn more about OAuth,

checkout the other videos in the series.

Thank you for watching!

You might also like