OAuth 2 - Authorization Roles
Definisi
OAuth2 Authorization Roles adalah pihak/komponen yang terlibat dalam proses otorisasi OAuth 2. Roles tersebut bisa saja benar-benar terpisah, atau bisa saja tergabung menjadi satu.
Apa saja roles Auth 2 ?
-
Pengguna (Resource Owner)
Iya.. itu kita yang punya login di aplikasi pihak ketiga. Yang mempunyai akses terhadap data-data kita di sebuah API/service di tempat lain.
Misalkan si Badu saat ini sedang login dan berada di sebuah aplikasi chatting terbaru.
Badu ingin melakukan share foto-fotonya yang ada di facebook dengan teman-temannya yang lagi chatting dengannya. Aplikasi chatting ini menyediakan fungsi untuk mengakses foto-foto Badu di facebook dengan menggunakan proses otorisasi OAuth 2 ke facebook.
Badu dalam hal ini adalah sebagai Pengguna (Resource Owner) yang memiliki data di facebook.
-
Aplikasi client (Client)
Adalah aplikasi pihak ketiga, yang membutuhkan akses terhadap resource yang dibutuhkan. Aplikasi chatting seperti yang diinfokan di poin nomor 1 diatas adalah contoh aplikasi client.
Apakah aplikasi client ini akan selalu berbeda dengan aplikasi API/service ? Apakah sebuah aplikasi chatting tadi tidak bisa mempunyai API/service sendiri yang menyimpan data-data pengguna, tetapi harus mengambil dari API/service lain seperti facebook ?
Tentu saja tidak, aplikasi client ini bisa saja merupakan aplikasi yang sama/segrup dengan aplikasi API nya. Aplikasi client, API, server otorisasi bisa saja merupakan bagian dari sebuah aplikasi di server yang sama dan nama aplikasi yang sama, tetapi berbeda modul.
Roles Aplikasi client ini adalah roles yang tidak membatasi fisik dan kategori aplikasinya.
Aplikasi client ini juga harap dibedakan antara aplikasi web, native app, javascript based application.
Aplikasi web artinya aplikasi yang ada servernya, dimana bisa disimpan code/secret code secara aman di web server sesuai konfigurasi masing-masing web server nya.
aplikasi native, javascript based application adalah aplikasi yang tidak mempunyai web server, dan berjalan di sisi perangkat/sistem operasi client seperti Android atau IOS, atau berjalan di sisi browser saja.
-
Server Otorisasi (Authorization Server)
Adalah pihak pengatur akses token dan otorisasi. Yang menentukan apakah aplikasi pihak ketiga berhak meminta akses, dan apakah pengguna punya akses untuk flow selanjutnya.
Server otorisasi ini jugalah yang akan mengeluarkan grant code, access token, refresh token dan hal lain yang terkait dengan keamanan otorisasi.
-
API (Resource server)
Pihak penyedia sumber daya, seperti google, facebook, API sendiri, dll. Pihak yang menyediakan sumber daya umum yang biasa dibutuhkan aplikasi pihak ketiga, seperti alamat email, address book, data-data penting, foto, dll.
Lebih diingat lagi, API (Resource Server) ini adalah roles, yang bisa saja lokasinya sama dengan lokasi server otorisasi, atau merupakan bagian dari aplikasi yang sama dengan aplikasi otorisasi atau aplikasi client yang mengaksesnya.