Skip to main content

Appendix A - Grant Type FLows and Endpoints Mapping

Status

Ready for review

Grant Type and Endpoint Mapping for OAuth 2​

This table is to map the different OAUth 2 flows to the direct end point and provides an indication of complexity and similarity/differences between each of the OAuth 2 flows.

End Points**Authorisation Code FlowImplicit FlowResource Owner Password Credential FlowClient Credential Flow
Authentication End Point

TO OAuth 2 server
GET /authorize?
response_type= code
&scope=
&client_id=healthabc
&state=a4e0761eK8c21
&redirect_uri=https%3A%2f%2F
HTTP/1.1
GET /authorize?response_type=token
&scope=
&client_id=healthabc
state=a4e0761eK8c21
&redirect_uri=https%3A%2f%2F
HTTP/1.1
N/A YELLOW
AUTHN END POINT NOT USED
N/A YELLOW
AUTHN END POINT NOT USED
Redirect URL

To Client
HTTP/1.1 302 Found
Location:https://
Code=SpixdfghgeQQrkskfHiL75T

&state=a4e0761eK8c21
HTTP/1.1 302 Found
Location:https://
Access_token=a4e0761eK8c24
&token_type=bearer

&state=a4e0761eK8c21
N/A YELLOW
AUTHN END POINT NOT USED
N/A YELLOW
AUTHN END POINT NOT USED
Token Endpoint

To OAuth 2 Server
POST /token HTTP/1.1
Host: s1.health.govt.nz
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0Msdasdasd
Grant_type=authorization_code
&code=SpixdfghgeQQrkskfHiL75T
N/A YELLOW
TOKEN RETURNED FROM
AUTHN ENDPOINT CALL
POST /token HTTP/1.1
Host: s1.health.govt.nz
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0Msdasdasd
Grant_type=Password
&username=user1
&password=wef8&967
POST /token HTTP/1.1
Host: s1.health.govt.nz
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0Msdasdasd
Grant_type=client_credentials
Response

to Client
HTTP/1.1 200 OK
Content-Type:application/json{
"Access_token”: “SFRuiJhfeUnb",
“token_type”: “Bearer”,
“refresh_token”: “JkiOlpvbErW”,
“expires_in”: 3600
}
N/A YELLOW
TOKEN RETURNED FROM
AUTHN ENDPOINT CALL
HTTP/1.1 200 OK
Content-Type:application/json{
"Access_token”: “SFRuiJhfeUnb",
“token_type”: “Bearer”,
“refresh_token”: “JkiOlpvbErW”,
“expires_in”: 3600
}
HTTP/1.1 200 OK
Content-Type:application/json{
"Access_token”: “SFRuiJhfeUnb",
“token_type”: “Bearer”,
“refresh_token”: “JkiOlpvbErW”,
“expires_in”: 3600
}
Resource Server

from Client
GET /api
Authorization: Bearer SFRuiJhfeUnb
Host: server
GET /api
Authorization: Bearer SFRuiJhfeUnb
Host: server
GET /api
Authorization: Bearer SFRuiJhfeUnb
Host: server.
GET /api
Authorization: Bearer SFRuiJhfeUnb
Host: server.
Response from Resource Server

To Client
HTTP/1.1 200OK
Content-Type: application/json
{
“info” "details"
}
HTTP/1.1 200OK
Content-Type: application/json
{
“info” "details"
}
HTTP/1.1 200OK
Content-Type: application/json
{
“info” "details"
}
HTTP/1.1 200OK
Content-Type: application/json
{
“info” "details"
}

Refresh Token Flow​

End Points**Authorisation Code FlowImplicit FlowResource Owner Password Credential FlowClient Credential Flow
Refresh Token

From Client

To Token Endpoint
POST /token HTTP/1.1
Host: Server name
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0Msdasdasd
Grant_type=refresh_token
&refresh_token=JkiOlpvbErW
N/A YELLOW
NO REFRESH TOKEN
IN THIS FLOW
POST /token HTTP/1.1
Host: Server name
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0Msdasdasd
Grant_type=refresh_token
&refresh_token=JkiOlpvbErW
N/A YELLOW
NO REFRESH TOKEN
IN THIS FLOW
Response

To Client
HTTP/1.1 200 OK
Content-Type:application/json
{
"Access_token”: “JHuytGdfKm",
“token_type”: “Bearer”,
“refresh_token”: "JHuytGdfKm”,
“expires_in”: 3600
}
N/A YELLOW
NO REFRESH TOKEN
IN THIS FLOW
HTTP/1.1 200 OK
Content-Type:application/json{
"Access_token”: “JHuytGdfKm",
“token_type”: “Bearer”,
“refresh_token”: “JHuytGdfKm”,
“expires_in”: 3600
}
N/A YELLOW
NO REFRESH TOKEN
IN THIS FLOW

Open ID Connect Implicit and Hybrid​

OpenID Connect can work with all the existing OAuth 2.0 grant types, but the Resource Owner password credential flow and the Client Credential Flow are not normally run as a OpeinID COnnect flow.

OpenID Connect has the following Key flows:

  • Authorisation Code Grant Flow

  • Implicit flow - id_token token.

  • Implicit flow - id_token

  • Hybrid Flow - code id_token token

  • Hybrid Flow - code id_token

  • Hybrid Flow - code token

End PointsAuthorisation Code FlowImplicit Flow id_token tokenImplicit Flow id_tokenHybrid code id_token tokenHybrid code id_tokenHybrid code token
Authentication End Point

TO OAuth 2 server
GET /authorize?
response_type= code
&scope=openid
&client_id=healthabc
&state=a4e0761eK8c21


&redirect_uri=https%3A%2f%2F
HTTP/1.1
GET /authorize?
response_type= id_token token
&scope=openid
&client_id=healthabc
&state=a4e0761eK8c21
&nonce=gfTU879F4
&redirect_uri=https%3A%2f%2F
HTTP/1.1
GET /authorize?
response_type= id_token
&scope=openid
&client_id=healthabc
&state=a4e0761eK8c21
&nonce=gfTU879F4
&redirect_uri=https%3A%2f%2F
HTTP/1.1
GET /authorize?
response_type= code id_token token
&scope=openid profile email
&client_id=healthabc
&state=a4e0761eK8c21
&redirect_uri=https%3A%2f%2F
HTTP/1.1
GET /authorize?
response_type= code id_token
&scope=openid
&client_id=healthabc
&state=a4e0761eK8c21
&redirect_uri=https%3A%2f%2F
HTTP/1.1
GET /authorize?
response_type= code token
&scope=openid
&client_id=healthabc
&state=a4e0761eK8c21
&redirect_uri=https%3A%2f%2F
HTTP/1.1
Redirect URL

To Client
HTTP/1.1 302 Found
Location:https://
Code=SpixdfghgeQQrkskfHiL75T


&state=a4e0761eK8c21

HTTP/1.1 302 Found
Location:https://

Access_token=a4e0761eK8c24
&token_type=bearer

&state=a4e0761eK8c21
&"id_token": "eyJ...."
HTTP/1.1 302 Found
Location:https://




&state=a4e0761eK8c21
&"id_token": "eyJ...."
HTTP/1.1 302 Found
Location:https://
Code=SpixdfghgeQQrkskfHiL75T
Access_token=a4e0761eK8c24
&token_type=bearer

&state=a4e0761eK8c21
&"id_token": "eyJ...."
HTTP/1.1 302 Found
Location:https://
Code=SpixdfghgeQQrkskfHiL75T


&state=a4e0761eK8c21
&"id_token": "eyJ...."
HTTP/1.1 302 Found
Location:https://
Code=SpixdfghgeQQrkskfHiL75T
Access_token=a4e0761eK8c24
&token_type=bearer

&state=a4e0761eK8c21

Token Endpoint

To OAuth 2 Server
POST /token HTTP/1.1
Host: s1.health.govt.nz
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0Msdasdasd
Grant_type=authorization_code
&code=SpixdfghgeQQrkskfHiL75T
N/A YELLOW
TOKEN RETURNED FROM
AUTHN ENDPOINT CALL
N/A YELLOW
NO TOKEN RETURNED FROM
AUTHN ENDPOINT CALL
POST /token HTTP/1.1
Host: s1.health.govt.nz
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0Msdasdasd
Grant_type=authorization_code
&code=SpixdfghgeQQrkskfHiL75T
Response

to Client
HTTP/1.1 200 OK
Content-Type:application/json{
"Access_token”: “SFRuiJhfeUnb",
“token_type”: “Bearer”,
“refresh_token”: “JkiOlpvbErW”,
“expires_in”: 3600,
"id_token": "eyJ..."
}
N/A YELLOW
TOKEN RETURNED FROM
AUTHN ENDPOINT CALL
N/A YELLOW
NO TOKEN RETURNED FROM
AUTHN ENDPOINT CALL
HTTP/1.1 200 OK
Content-Type:application/json{
"Access_token”: “SFRuiJhfeUnb",
“token_type”: “Bearer”,
“refresh_token”: “JkiOlpvbErW”,
“expires_in”: 3600,
"id_token": "eyJ..."
}
Resource Server

from Client
GET /api
Authorization: Bearer SFRuiJhfeUnb
Host: server
GET /api
Authorization: Bearer SFRuiJhfeUnb
Host: server
N/A YELLOW
NO TOKEN RETURNED FROM
AUTHN ENDPOINT CALL
GET /api
Authorization: Bearer SFRuiJhfeUnb
Host: server
Response from Resource Server

To Client
HTTP/1.1 200OK
Content-Type: application/json
{
“info” "details"
}
HTTP/1.1 200OK
Content-Type: application/json
{
“info” "details"
}
N/A YELLOW
NO TOKEN RETURNED FROM
AUTHN ENDPOINT CALL
HTTP/1.1 200OK
Content-Type: application/json
{
“info” "details"
}

Refresh Token OpenID Connect​

End PointsAuthorisation Code FlowImplicit Flow id_token tokenImplicit Flow id_tokenHybrid code id_token tokenHybrid code id_tokenHybrid code token
Refresh Token

From Client

To Token Endpoint
POST /token HTTP/1.1
Host: Server name
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0Msdasdasd
Grant_type=refresh_token
&refresh_token=JkiOlpvbErW
N/A YELLOW
NO REFRESH TOKEN
IN THIS FLOW
N/A YELLOW
NO REFRESH TOKEN
IN THIS FLOW
POST /token HTTP/1.1
Host: Server name
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0Msdasdasd
Grant_type=refresh_token
&refresh_token=JkiOlpvbErW
Response

To Client
HTTP/1.1 200 OK
Content-Type:application/json
{
"Access_token”: “JHuytGdfKm",
“token_type”: “Bearer”,
“refresh_token”: "JHuytGdfKm”,
“expires_in”: 3600
}
N/A YELLOW
NO REFRESH TOKEN
IN THIS FLOW
N/A YELLOW
NO REFRESH TOKEN
IN THIS FLOW
HTTP/1.1 200 OK
Content-Type:application/json
{
"Access_token”: “JHuytGdfKm",
“token_type”: “Bearer”,
“refresh_token”: "JHuytGdfKm”,
“expires_in”: 3600
}