Sunday, September 17, 2017

Membuat OAuth2 Server dengan OAG

Pada kesempatan ini saya ingin menjelaskan cara membuat OAuth2 dengan OAG, dapat diketahui dengan demikian OAG akan menjadi Authorization Server.

Pada OAG terbaru kali ini (11.1.2.1.4.0) membuat OAuth Server sangatlah mudah, yang pertama harus dilakukan adalah dengan meng-import pada OAG pada Policy Studio. template OAuth2 Server yang sudah disediakan dalam folder berikut:

"Your OAG Installation Folder/apigateway/samples/oauth/authzserver/config.xml"

File yang akan di import di OAG

Template ini menyediakan cache-cache untuk menyimpan kredensial OAuth, User yang diperlukan untuk mengakses OAuth Server, dan OAuth Acces Token Grant yang dapat digunakan. untuk meng-import template ini, diperlukan mengklik File > Import.

data-data yang di-import dari template


Untuk mengakses OAuth Server, user diperlukan mengakses oaghost:oauthport dengan protokol https, kali ini saya menggunakan localhost dengan port 8089 (default OAuth2 Port OAG) untuk mengakses OAuth Server.

OAuth2 Authorization Server

Dalam OAuth Authorization Server ini kita akan memasukkan credentials user dengan admin role yang telah didaftarkan, default dari template adalah dengan login name "regadmin" dan password "changeme" (untuk mengubah atau menambahkan user, dapat dilakukan dengan mengakses Users and Groups > Users pada OAG Policy Studio), setelah memasuki OAuth Server ini kita dapat mendaftarkan aplikasi ataupun meng-import konfigurasi aplikasi yang sudah ada, tentu saja aplikasi-aplikasi yang akan kita buat ini merupakan aplikasi yang akan mengakses OAuth Server kita (Client kita).  

Untuk membuat aplikasi dapat dimulai dari mengklik "new application" lalu memasukkan application name dan descriptionnya jika dibutuhkan, setelah selesai klik tombol "Create"

Pembuatan aplikasi baru

setelah itu masuk ke bagian "OAuth Credentials" lalu klik "New Client Id". pilihlah jenis client dari aplikasi ini baik itu confidential maupun public dan isilah data-data lainnya bila perlu lalu klik "Create"
Pembuatan OAuth2 Credentials

Pada saat ini akan muncul satu baris data yang berisi OAuth Credentials, simpanlah Client ID dan Secret yang tercipta (Untuk menampilkan Secret klik Show Secret), agar data aplikasi ini bisa diakses oleh aplikasi kita harus menambah scope, scope ini akan menentukan batasan-batasan yang dapat dilakukan aplikasi pada data yang dia dapat dari OAuth2, untuk saat ini saya menambahkan 2 scope yaitu resource.READ dan resource.WRITE.

Setelah membuat aplikasi, kita perlu untuk membuat OAuth2 Stores yang akan digunakan untuk menyimpan data access token dikala aplikasi yang kita daftarkan menghit OAuth2 yang kita buat untuk mendapatkan token, namun kali ini kita akan menggunakan hasil import dari template yaitu OAuth Access Token Store. (Saya akan menggunakan OAuth2 Stores dari sample yang kita import, dan OAuth2 Stores ini terletak di Libraries > OAuth2 Stores)

Pembuatan OAuth2 Stores


Terdapat berbagai macam metode penyimpanan baik itu pada cache KPS (KPS yang dibuat saat meng-import config OAuth2), menyimpan pada database, dan terakhir penyimpanan pada apache cassandra. Saya menggunakan apache cassandra agar kita tidak perlu repot memonitor data access token dan langsung tersimpan pada OAG.

Dengan menggunakan generated policies dari konfigurasi yang kita import, agar lebih mudah dipahami saya akan menggunakan client credentials grant karena lebih simple dan straight forward, dan saat ini kita sudah bisa melihat OAG menghasilkan Access Token, namun saya ingin menggunakan Authorization Header yang menggunakan encode BASE64 dari (Client ID:Secret) untuk mendapatkan token, sehingga saya mengubah policy dari Client Credentials untuk mengambil data dari Authorization Header. (Policy terletak di Policies > OAuth 2.0 > Client Credentials), jangan lupa mengecek tab Access Token untuk merubah data lama waktu hidup token, panjang token, dimana token akan disimpan, apakah akan memberikan refresh token, membuat scope token pada tab Access Token (Saya menggunakan default setting dimana token akan disimpan pada OAuth2 Stores yang dibuat/diimport diatas)

Pengubahan validasi aplikasi pada policy client credentials

Mari kita melakukan percobaan untuk mendapatkan access token dengan menggunakan curl dengan command sebagai berikut:

curl -X POST \'{protocol}://{host:port}{path}' \
  -H 'authorization: Basic {BASE64Encode(Client_id:Secret)}' \
  -H 'content-type: application/x-www-form-urlencoded' \
  -d grant_type=client_credentials

path disesuaikan dengan relative path yang didaftarkan di OAG policy studio

Pengambilan Access Token menggunakan Postman dengan command yang sama dengan diatas.

Sekian penjelasan mengenai OAuth2 Server dari saya.

Terimakasih.

No comments:

Post a Comment