Grant Types

Grant Types merupakan proses pemberian akses ke resources (sumber data) yang dilindungi dengan berbagai cara dan keamanan data yang berbeda.

Berikut beberapa jenis grant types:
  1. Authorization Code Grant
  2. Implicit Grant
  3. Client Credential Grant
  4. Resource Owner Password Credential Grant

Authorization Code Grant
Grant Types
Tirez Autorization Code Grant Type

Ada beberapa tahapan dalam proses Authorization Code Grant Type yaitu:
  1. Authorization Code
  2. Get the Token
  3. Use the Token to Access a Resource

Penjelasan 
1. Authorization Code
Proses yang pertama ini melibatkan resource owner, client, dan OAuth Server.
Tujuan dari proses ini yaitu mendapatkan authorization code yang akan digunakan untuk mendapatkan access token.

Beberapa parameter yang dibawa ketika client request endpoint /authorize:
Grant Types
Tirez Authorization Code Flow

Beberapa parameter yang dibawa ketika client request endpoint /authorize:
  • Response_type
  • Client_id
  • Scope
  • State
  • Redirect_uri,

2. Get the Token
Selanjutnya kita memerlukan Access Token untuk request suatu Resources. untuk mendapatkan access token, kita request satu endpoint yang bernama /token dengan method POST. Jenis Authorization yang digunakan request token yaitu HTTP Basic yang mana terdiri dari username dan password yang dipisahkan dengan titik dua (colon) dan di encode menggunakan base64.
Grant Types
Tirez Authorization Code Flow

Terdapat beberapa parameter yang dibawa yaitu:
  • access_token
  • Bearer.
  • refresh_token
  • expires_in

3. Use the Token to Access a Resource
Tahap ini merupakan tahap dimana client mengakses Resources menggunakan token. Client akan mengakses data dengan request ke salah satu endpoint yang disediakan Resource Server sesuai dengan data yang dibutuhkan.
Grant Types
Tirez Authorization Code Flow

Authorization Code Grant: Refresh Token
Dalam waktu tertentu access token perlu di refresh. Dengan refresh token kita tidak perlu melakukan authorization kembali untuk mendapatkan access_token yang baru.


Tirez Refresh Token

Untuk mendapatkan access token yang baru client perlu request endpoint /token dengan parameter grant_type diisi dengan refresh_token dan parameter refresh_token.

Tirez Refresh Token

Implicit Grant
Implicit Grant merupakan penyederhanaan dari Authorization Code Grant.
Grant Types
Tirez Implicit Flow

Langkah pertama, request authorization endpoint seperti pada gambar dibawah ini.

Grant Types
Tirez Implicit Flow

Setelah berhasil OAuth Server akan langsung memberikan access token, token type dan state,

Grant Types
Tirez Implicit Flow

Client Credentials Grant
Client Credentials ini hanya menggunakan endpoint /token, tidak menggunakan endpoint /auth, tidak memerlukan resource owner untuk meng otentikasi dirinya dan tidak ada refresh token.

Client Credentials Grant

Grant Types
Tirez Client Credentials Grant

Parameter yang dibawa yaitu grant type yang berisi client_credentials.

Grant Types

Jika berhasil maka OAuth Server akan merespon data seperti berikut:

Tirez Client Credential Flow

Tirez Refresh Token

Resource Owner Password

Credential Grant

Grant Types

Resource Owner Password Credential Grant
Jenis grant ini resource owner akan memasukan username dan password nya secara langsung ke client (Third Party Apps). Grant type ini biasanya digunakan jika aplikasi yang dibangun merupakan aplikasi pribadi atau pembuat aplikasi berasal dari perusahaan yang sama.

Alur
  1. Resource owner memasukan username dan password ke client (Third Party Apps).
  2. Client meminta access token ke OAuth Server menggunakan endpoint /token dengan memasukan credentials yang didapatkan dari resource owner.
  3. OAuth Server akan melakukan authentication dan validasi credentials resource owner, jika valid, maka akan menampilkan access token.